JSON_VALUE |
Valeur JSON |
|---|---|
| Oracle Database SQL | Oracle 12c Release 1 (12.1.0.2) |
Syntaxe
| JSON_VALUE ( expr [ FORMAT JSON ], JSON_basic_path_expression [ JSON_value_returning_clause ] [ JSON_value_on_error_clause ] [ JSON_value_on_empty_clause ] ) |
Paramètres
| Nom | Description |
|---|---|
| expr | Ce paramètre permet de spécifier l'expression SQL contenant le document JSON source, que ce soit une colonne, une chaîne JSON ou un champ de type CLOB. |
| FORMAT JSON | Ce paramètre permet d'indiquer que le contenu fourni par expr est bien un document JSON valide, afin qu'Oracle le traite directement sans tentative de conversion. |
| JSON_basic_path_expression | Ce paramètre permet de définir le chemin JSON (comme $.prix) à partir duquel Oracle extrait la valeur souhaitée à l'intérieur du document JSON. |
| JSON_value_returning_clause | Ce paramètre permet de spécifier le type SQL attendu pour la valeur retournée (par exemple RETURNING NUMBER, RETURNING VARCHAR2(100)), facilitant la conversion typée. |
| JSON_value_on_error_clause | Ce paramètre permet de déterminer le comportement à adopter si une erreur se produit lors de l'évaluation du chemin JSON (exemple : NULL ON ERROR, ERROR ON ERROR). |
| JSON_value_on_empty_clause | Ce paramètre permet de définir la valeur de retour si le chemin JSON spécifié n'aboutit à aucun résultat (exemple : NULL ON EMPTY, DEFAULT 'Inconnu' ON EMPTY). |
Description
Cette fonction permet d'extraire une valeur scalaire (chaîne, nombre, booléen) depuis un document JSON. Contrairement à JSON_QUERY, elle retourne une valeur SQL simple.
Remarques
- JSON_VALUE est spécialement conçue pour extraire des valeurs scalaires simples d'un document JSON : Contrairement à JSON_QUERY retournant des fragments JSON (objets ou tableaux), JSON_VALUE produit une valeur atomique (ex. une chaîne, un nombre ou un booléen) exploitable directement en SQL, facilitant les comparaisons et calculs.
- La fonction prend en entrée une expression SQL qui contient du JSON au format texte : Cela peut être une colonne de type VARCHAR2, CLOB ou même une expression littérale JSON. L'option FORMAT JSON indique explicitement que cette entrée est un JSON valide pour éviter des erreurs ou conversions inutiles.
- L'expression de chemin JSON (JSON_basic_path_expression) est cruciale pour cibler précisément la donnée à extraire : Utilisant la syntaxe standard JSONPath (exemple $.prix), elle permet de naviguer dans l'arborescence JSON pour extraire uniquement la valeur souhaitée, réduisant ainsi le besoin de manipulation post-traitement.
- JSON_VALUE offre une conversion typée via le paramètre JSON_value_returning_clause : Cela permet d'extraire la valeur dans le type SQL attendu (nombre, chaîne, date), ce qui évite les erreurs de typage ou la nécessité de conversions additionnelles en SQL.
- Le contrôle des erreurs est intégré via la clause JSON_value_on_error_clause : L'utilisateur peut choisir entre faire échouer la requête (ERROR ON ERROR) ou retourner une valeur NULL (NULL ON ERROR) en cas d'erreur, ce qui permet de gérer plus finement les données JSON non conformes.
- Le comportement en cas de chemin JSON non trouvé est configurable : Avec JSON_value_on_empty_clause, il est possible de retourner NULL, une valeur par défaut ou une autre réponse personnalisée si le chemin spécifié ne correspond à aucune donnée, évitant ainsi des résultats inattendus.
- Cette fonction s'intègre parfaitement dans les clauses WHERE, SELECT, et même dans les expressions SQL complexes : Elle facilite les requêtes sur des documents JSON directement dans la base, sans avoir besoin d'outils externes ou de manipulations lourdes côté application.
- JSON_VALUE est particulièrement utile pour les bases Oracle entreposent des données JSON dans des colonnes traditionnelles : Grâce à elle, on peut exploiter pleinement la richesse des données semi-structurées tout en restant dans un environnement SQL natif.
- Les performances de JSON_VALUE sont optimisées dans Oracle 12c et versions ultérieures : Le moteur SQL est capable d'analyser efficacement le JSON et d'extraire la valeur ciblée sans surcharge importante, ce qui est un atout pour les applications transactionnelles.
- La fonction respecte la norme SQL/JSON introduite dans Oracle 12c, garantissant une compatibilité et une portabilité : Cela facilite la migration ou l'intégration avec d'autres systèmes utilisant JSON, ainsi que la maintenance du code.
- JSON_VALUE peut être combinée avec d'autres fonctions JSON comme JSON_EXISTS ou JSON_TABLE pour des requêtes complexes : Cette combinaison permet de construire des analyses et extractions avancées sur des documents JSON, renforçant la puissance du SQL moderne.
- Enfin, la simplicité d'utilisation de JSON_VALUE la rend accessible aux développeurs SQL novices comme aux experts : En fournissant une interface claire pour extraire des valeurs scalaires JSON, elle encourage une adoption large et une meilleure gestion des données JSON en base Oracle.
Dernière mise à jour : Dimanche, le 29 Juin 2025