Extrait la valeur située à un chemin d'accès spécifié dans une chaîne JSON et la renvoie sous forme de chaîne VARCHAR. Si le chemin correspond à un tableau ou à un objet, la structure correspondante est sérialisée en une chaîne VARCHAR au lieu d'être renvoyée sous son type natif.
Limitations
La fonction JSON_VALUE est prise en charge uniquement dans Realtime Compute for Apache Flink utilisant Ververica Runtime (VVR) 3.0.0 ou une version ultérieure.
Syntaxe
VARCHAR JSON_VALUE(VARCHAR content, VARCHAR path)
Paramètres
| Paramètre | Type de données | Description |
|---|---|---|
content |
VARCHAR | La chaîne JSON à analyser. Le type du paramètre doit être VARCHAR. Si ce n'est pas le cas, utilisez la fonction CAST pour convertir la valeur au préalable ; transmettre directement une valeur qui n'est pas de type VARCHAR peut entraîner des erreurs d'analyse et des résultats NULL inattendus. |
path |
VARCHAR | L'expression de chemin qui identifie la valeur à extraire. Placez le chemin entre guillemets simples ('). Exemple : JSON_VALUE(json,'$.passenger_name') AS ABC |
Le paramètre path prend en charge les symboles suivants :
| Symbole | Signification |
|---|---|
$ |
Objet racine |
[] |
Indice de tableau |
* |
Caractère générique de tableau |
. |
Élément enfant |
Remarques d'utilisation
Si le paramètre
contentcontient du code JSON non valide, ou si l'un des paramètres est défini surNULL, la fonction renvoieNULL.Si le chemin correspond à un tableau ou à un objet, le résultat est une représentation sous forme de chaîne
VARCHARde cette structure (par exemple,[30,40]), et non un tableau ou un objet natif.
Exemples
Les exemples suivants utilisent une seule instruction SELECT sur la table T1 pour illustrer l'impact de différentes combinaisons de valeurs pour les paramètres content et path sur le résultat.
Table T1 :
| id (INT) | json (VARCHAR) | path1 (VARCHAR) |
|---|---|---|
| 1 | [10, 20, [30, 40]] |
$[2][*] |
| 2 | {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"} |
$.ccc.hhh[*] |
| 3 | {"aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hhh":["h0","h1","h2"]},"iii":"jjj"} |
$.ccc.hhh[1] |
| 4 | [10, 20, [30, 40]] |
NULL |
| 5 | NULL | $[2][*] |
| 6 | "{xx]" |
"$[2][*]" |
Instruction de test :
SELECT
id,
JSON_VALUE(json, path1) AS `value`
FROM
T1;
Résultats :
| id (INT) | value (VARCHAR) | Notes |
|---|---|---|
| 1 | [30,40] |
Tableau situé à l'emplacement $[2] — tous les éléments sélectionnés via *, sérialisés en VARCHAR |
| 2 | ["h0","h1","h2"] |
Tableau imbriqué situé à l'emplacement $.ccc.hhh — tous les éléments sélectionnés via *, sérialisés en VARCHAR |
| 3 | h1 |
Élément unique à l'indice 1 du tableau hhh |
| 4 | NULL | La valeur de path1 est NULL |
| 5 | NULL | La valeur de json est NULL |
| 6 | NULL | La valeur de json correspond à du code JSON non valide |