- Catégories :
Fonctions de données semi-structurées et structurées (Extraction)
JSON_EXTRACT_PATH_TEXT¶
Analyse le premier argument sous la forme d’une chaîne JSON et renvoie la valeur de l’élément pointé par le chemin d’accès dans le deuxième argument. Est équivalent à TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))
Syntaxe¶
JSON_EXTRACT_PATH_TEXT( <column_identifier> , '<path_name>' )
Arguments¶
column_identifier
Le nom de la colonne avec les données que vous souhaitez extraire.
path_name
Une chaîne qui contient le chemin d’accès à l’élément que vous souhaitez extraire.
Renvoie¶
Le type de données de la valeur renvoyée est VARCHAR.
Notes sur l’utilisation¶
La fonction renvoie NULL si le nom du chemin ne correspond à aucun élément.
La syntaxe du nom de chemin est la notation standard JavaScript ; il consiste en une concaténation de noms de champs (identificateurs) précédés de points (par exemple,
.
) et d’opérateurs d’index (par exemple,[<index>]
) :Le premier nom de champ ne nécessite pas que la période de tête soit spécifiée.
Les valeurs d’index dans les opérateurs d’index peuvent être des entiers non négatifs (pour les tableaux) ou des littéraux de chaîne entre guillemets simples ou doubles (pour les champs d’objet).
Pour plus de détails, voir Interrogation de données semi-structurées.
Pour maintenir la cohérence syntaxique, la notation de chemin prend également en charge les identificateurs entre guillemets de style SQL et l’utilisation de
:
comme séparateurs de chemin.
Exemples¶
Créer une table et insérer des valeurs :
CREATE TABLE demo1 (id INTEGER, json_data VARCHAR); INSERT INTO demo1 SELECT 1, '{"level_1_key": "level_1_value"}'; INSERT INTO demo1 SELECT 2, '{"level_1_key": {"level_2_key": "level_2_value"}}'; INSERT INTO demo1 SELECT 3, '{"level_1_key": {"level_2_key": ["zero", "one", "two"]}}';
Utilisez JSON_EXTRACT_PATH_TEXT pour extraire une valeur d’une simple chaîne de niveau 1 :
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +--------------------------------------+--------------------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |--------------------------------------+--------------------------------------| | level_1_value | level_1_value | | {"level_2_key":"level_2_value"} | {"level_2_key":"level_2_value"} | | {"level_2_key":["zero","one","two"]} | {"level_2_key":["zero","one","two"]} | +--------------------------------------+--------------------------------------+
Utilisez JSON_EXTRACT_PATH_TEXT pour extraire une valeur d’une chaîne de niveau 2 à l’aide d’un chemin de niveau 2 :
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +----------------------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |----------------------+------------------------| | NULL | NULL | | level_2_value | level_2_value | | ["zero","one","two"] | ["zero","one","two"] | +----------------------+------------------------+
Cet exemple contient un tableau :
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key[1]')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key[1]') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +---------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |---------+------------------------| | NULL | NULL | | NULL | NULL | | one | one | +---------+------------------------+