Catégories :

Fonctions de données semi-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 VARIANT du champ ou de l’élément en fonction du nom de chemin fourni comme deuxième argument.

Syntaxe

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

<column_identifier>:<path_name>

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

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 SQLet 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;

Identique au premier exemple, mais en utilisant : comme opérateur d’extraction :

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

Notez que l’opérateur d’extraction : est associatif à gauche, c’est-à-dire que 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.

Identique au premier exemple, mais en utilisant les identificateurs entre guillemets de style SQL et : comme séparateur de chemin :

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