Catégories :

Fonctions de données semi-structurées et structurées (extraction)

GET_PATH , :

Extrait une valeur des données semi-structurées à l’aide d’un nom de chemin.

GET_PATH est une variation de GET. Il prend comme premier argument un nom de colonne VARIANT, OBJECT ou ARRAY et extrait la valeur du champ ou de l’élément en fonction du nom de chemin d’accès fourni comme deuxième argument.

Syntaxe

GET_PATH( <column_identifier> , '<path_name>' )

<column_identifier>:<path_name>

:( <column_identifier> , '<path_name>' )
Copy

Arguments

column_identifier

Une expression qui est évaluée sur une colonne OBJECT, ARRAY ou VARIANT.

path_name

Une expression qui est évaluée à un VARCHAR. Cette opération indique le chemin d’accès au champ ou à l’élément à extraire.

Pour les types structurés, vous devez spécifier une constante de chaîne.

Renvoie

  • La valeur renvoyée est l’élément spécifié du ARRAY ou la valeur qui correspond à la clé spécifiée d’une paire clé-valeur dans l’OBJECT.

  • Si l’objet d’entrée est un OBJECT, un ARRAY ou une VARIANT semi-structuré(e), la fonction renvoie une VARIANT. Le type de données est VARIANT, car :

    • Dans un ARRAY, chaque élément est de type VARIANT.

    • Dans un OBJECT, la valeur de chaque paire clé-valeur est de type VARIANT.

  • Si l’objet d’entrée est un OBJECT structuré, un ARRAY structuré ou une MAP, la fonction renvoie une valeur du type spécifié pour l’objet.

    Par exemple, si le type de l’objet d’entrée est ARRAY(NUMBER), la fonction renvoie un NUMBER.

Notes sur l’utilisation

  • GET_PATH est équivalent à une chaîne de fonctions GET. Il 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 nombres décimaux 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.

  • GET_PATH prend également en charge un raccourci syntaxique utilisant le caractère : en tant qu’opérateur d’extraction séparant le nom de la colonne (pouvant contenir des points) du spécificateur de chemin d’accès.

    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.

    Lorsque l’opérateur : est utilisé, toutes les expressions de type entier ou chaîne peuvent être incluses dans [].

Exemples

Extrayez le champ name de la table vartab :

SELECT GET_PATH(v, 'attr[0].name') FROM vartab;
Copy

C’est la même chose que le premier exemple, mais on utilise : comme opérateur d’extraction :

SELECT v:attr[0].name FROM vartab;
Copy

L’opérateur d’extraction : est associatif à gauche. Dans l’exemple ci-dessus, utiliser v:attr[0]:name a le même effet que le : gauche, produisant une valeur variant (contenant un objet) à partir de laquelle l’opérateur d’extraction de droite : extrait la valeur du champ name.

Il s’agit du même exemple que le premier, mais il utilise des identificateurs à double guillemets de type SQL et : comme séparateur de chemin :

SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;
Copy