JSON_ EXTRACT _ PATH _ TEXT fonction - Amazon Redshift

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 renvoyer NULL si la JSON chaîne d'entrée n'est pas valide au lieu de renvoyer une erreur. Pour revenir NULL si le n'JSONest pas valide, spécifiez true (t). Pour renvoyer une erreur si elle n'JSONest pas valide, spécifiez false (f). L’argument par défaut est false.

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

VARCHARChaî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'NULLexemple 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 |