Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
JSON_ EXTRACT _ PATH _ TEXT fonction
Note
JSON_ PARSE et ses fonctions associées analysent les JSON valeurs en tant que tellesSUPER, ce qu'Amazon Redshift analyse de manière plus efficace que. VARCHAR
Au lieu d'utiliser JSON EXTRACT _ _ PATH _TEXT, nous vous recommandons d'analyser vos JSON chaînes en utilisant le JSON_ PARSE fonction pour obtenir une SUPER valeur. Ensuite, recherchez l'élément souhaité à l'aide de la value.attribute
syntaxe. Pour plus d'informations sur l'interrogation d'éléments d'un tableau dans SUPER des valeurs, consultez. Interrogation de données semi-structurées
La TEXT fonction JSON _ EXTRACT _ PATH _ renvoie la valeur de la paire clé-valeur référencée par une série d'éléments de chemin dans une JSON chaîne. Le JSON chemin peut être imbriqué jusqu'à cinq niveaux de profondeur. Les éléments de chemin d’accès sont sensible à la casse. Si aucun élément de chemin n'existe dans la JSON chaîne, JSON _ EXTRACT _ PATH _ TEXT renvoieNULL
.
Si l'argument null_if_invalid est défini sur true
et que la JSON chaîne n'est pas valide, la fonction renvoie NULL
au lieu de renvoyer une erreur.
JSON_ _ EXTRACT PATH _ TEXT a une taille de données maximale de 64 Ko. Ainsi, si JSON un enregistrement est supérieur à 64 Ko, son traitement avec JSON _ EXTRACT _ PATH _ TEXT entraîne une erreur.
Pour plus d'informations sur JSON les fonctions supplémentaires, voirJSONfonctions. Pour plus d'informations sur l'utilisationJSON, consultezCOPYà partir du JSON format.
Syntaxe
JSON_EXTRACT_PATH_TEXT('json_string', 'path_elem' [,'path_elem'[, …] ] [, null_if_invalid ] )
Arguments
- json_string
-
JSONChaîne correctement formatée.
- path_elem
-
Un élément de chemin dans une JSON chaîne. Un élément de chemin d’accès est obligatoire. Des éléments de chemin supplémentaires peuvent être spécifiés, jusqu’à une profondeur de cinq niveaux.
- null_if_invalid
-
(Facultatif) Une
BOOLEAN
valeur qui indique s'il faut renvoyerNULL
si la JSON chaîne d'entrée n'est pas valide au lieu de renvoyer une erreur. Pour revenirNULL
si le n'JSONest pas valide, spécifieztrue
(t
). Pour renvoyer une erreur si elle n'JSONest pas valide, spécifiezfalse
(f
). L’argument par défaut estfalse
.
Dans une JSON chaîne, Amazon Redshift le reconnaît en \n
tant que caractère de nouvelle ligne et en tant \t
que caractère de tabulation. Pour charger une barre oblique inverse, précédez-la d’une barre oblique inverse (\\
). Pour plus d'informations, consultez Personnages d'évasion dans JSON.
Type de retour
VARCHAR
-
VARCHAR
Chaîne représentant la JSON valeur référencée par les éléments du chemin.
Exemples
Pour renvoyer la valeur du chemin 'f4', 'f6'
, utilisez l’exemple suivant.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4', 'f6');
+------------------------+ | json_extract_path_text | +------------------------+ | star | +------------------------+
Pour renvoyer une erreur car elle n'JSONest pas valide, utilisez l'exemple suivant.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6');
ERROR: invalid json object {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}
Pour définir null_if_invalid sur true, afin que l'instruction renvoie la valeur invalid JSON au lieu de renvoyer une erreur, utilisez l'NULL
exemple suivant.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6',true);
+------------------------+ | json_extract_path_text | +------------------------+ | NULL | +------------------------+
Pour renvoyer la valeur pour le chemin 'farm', 'barn', 'color'
, où la valeur récupérée se situe au troisième niveau, utilisez l’exemple suivant. Cet exemple est formaté à l'aide d'un outil JSON lint pour en faciliter la lecture.
SELECT JSON_EXTRACT_PATH_TEXT('{ "farm": { "barn": { "color": "red", "feed stocked": true } } }', 'farm', 'barn', 'color');
+------------------------+ | json_extract_path_text | +------------------------+ | red | +------------------------+
Pour renvoyer NULL
si l’élément 'color'
est manquant, utilisez l’exemple suivant. Cet exemple est formaté à l'aide d'un outil JSON Lint.
SELECT JSON_EXTRACT_PATH_TEXT('{ "farm": { "barn": {} } }', 'farm', 'barn', 'color');
+------------------------+ | json_extract_path_text | +------------------------+ | NULL | +------------------------+
Si le JSON est valide, essayer d'extraire un élément manquant revientNULL
.
Pour renvoyer la valeur du chemin 'house', 'appliances', 'washing machine', 'brand'
, utilisez l’exemple suivant.
SELECT JSON_EXTRACT_PATH_TEXT('{ "house": { "address": { "street": "123 Any St.", "city": "Any Town", "state": "FL", "zip": "32830" }, "bathroom": { "color": "green", "shower": true }, "appliances": { "washing machine": { "brand": "Any Brand", "color": "beige" }, "dryer": { "brand": "Any Brand", "color": "white" } } } }', 'house', 'appliances', 'washing machine', 'brand');
+------------------------+ | json_extract_path_text | +------------------------+ | Any Brand | +------------------------+
L'exemple suivant crée un exemple de table et le remplit avec des SUPER valeurs, puis renvoie la valeur du chemin 'f2'
pour les deux lignes.
CREATE TABLE json_example(id INT, json_text SUPER); INSERT INTO json_example VALUES (1, JSON_PARSE('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}')), (2, JSON_PARSE('{ "farm": { "barn": { "color": "red", "feed stocked": true } } }')); SELECT * FROM json_example;
id | json_text ------------+-------------------------------------------- 1 | {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}} 2 | {"farm":{"barn":{"color":"red","feed stocked":true}}}
SELECT id, JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(json_text), 'f2') FROM json_example;id | json_text ------------+-------------------------------------------- 1 | {"f3":1} 2 |