Catégories :

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

GET

Extrait une valeur d’un ARRAY ou d’un OBJECT (ou d’un VARIANT qui contient un ARRAY ou un OBJECT).

La fonction renvoie NULL si l’un des arguments est NULL.

Notez que cette fonction ne doit pas être confondue avec la commande GET DML.

Voir aussi :

GET_IGNORE_CASE , GET_PATH , :

Syntaxe

ARRAY (ou VARIANT contenant un ARRAY)

GET( <array> , <index> )

GET( <variant> , <index> )
Copy

OBJECT (ou VARIANT contenant un OBJECT)

GET( <object> , <field_name> )

GET( <variant> , <field_name> )
Copy

Arguments

object

Une expression qui donne un OBJECT contenant des paires clé-valeur.

field_name

Une expression qui est évaluée à un VARCHAR. Ceci spécifie la clé dans une paire clé-valeur pour laquelle vous voulez récupérer la valeur.

Si l’OBJECT ne contient pas la clé spécifiée, cette fonction renvoie NULL.

Le field_name ne doit pas être une chaîne vide.

array

Une expression qui donne un ARRAY.

index

Une expression qui donne un INTEGER. Ceci spécifie la position de l’élément à extraire du ARRAY. La position est basée sur 0, pas sur 1.

Si l’index pointe en dehors des limites du tableau ou si l’élément indexé n’existe pas (dans un tableau clairsemé), alors cette fonction renvoie NULL.

variant

Une expression qui évalue un VARIANT qui contient soit un ARRAY, soit un OBJECT.

Renvoie

Le type de données de la valeur renvoyée est VARIANT.

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. 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.

Notes sur l’utilisation

  • GET applique une correspondance sensible à la casse à field_name. Pour une correspondance ne respectant pas la casse, utilisez GET_IGNORE_CASE.

  • Si le premier paramètre est de type VARIANT :

    • Si le deuxième paramètre est de type VARCHAR (par exemple, un field_name), la fonction renvoie NULL si variant ne contient pas d’OBJECT.

    • Si le deuxième paramètre est de type INTEGER (par exemple, un index), la fonction renvoie NULL si variant ne contient pas de ARRAY.

Exemples

Créer une table avec des données d’échantillon :

CREATE TABLE vartab (a ARRAY, o OBJECT, v VARIANT);
INSERT INTO vartab (a, o, v) 
  SELECT
    ARRAY_CONSTRUCT(2.71, 3.14),
    OBJECT_CONSTRUCT('Ukraine', 'Kyiv'::VARIANT, 
                     'France',  'Paris'::VARIANT),
    TO_VARIANT(OBJECT_CONSTRUCT('weatherStationID', 42::VARIANT,
                     'timestamp', '2022-03-07 14:00'::TIMESTAMP_LTZ::VARIANT,
                     'temperature', 31.5::VARIANT,
                     'sensorType', 'indoor'::VARIANT))
    ;
Copy
SELECT a, o, v FROM vartab;
+---------+----------------------+-------------------------------------------------+
| A       | O                    | V                                               |
|---------+----------------------+-------------------------------------------------|
| [       | {                    | {                                               |
|   2.71, |   "France": "Paris", |   "sensorType": "indoor",                       |
|   3.14  |   "Ukraine": "Kyiv"  |   "temperature": 31.5,                          |
| ]       | }                    |   "timestamp": "2022-03-07 14:00:00.000 -0800", |
|         |                      |   "weatherStationID": 42                        |
|         |                      | }                                               |
+---------+----------------------+-------------------------------------------------+
Copy

Extraire le premier élément d’un ARRAY :

SELECT GET(a, 0) FROM vartab;
+-----------+
| GET(A, 0) |
|-----------|
| 2.71      |
+-----------+
Copy

En prenant le nom d’un pays, extrayez le nom de la capitale de ce pays d’un OBJECT contenant les noms de pays et les capitales :

SELECT GET(o, 'Ukraine') FROM vartab;
+-------------------+
| GET(O, 'UKRAINE') |
|-------------------|
| "Kyiv"            |
+-------------------+
Copy

Extraire la température d’un VARIANT qui contient un OBJECT :

SELECT GET(v, 'temperature') FROM vartab;
+-----------------------+
| GET(V, 'TEMPERATURE') |
|-----------------------|
| 31.5                  |
+-----------------------+
Copy

Pour des exemples plus détaillés, voir Interrogation de données semi-structurées.

Pour des exemples d’utilisation de GET avec XMLGET, voir les sections Exemples et Notes sur l’utilisation dans XMLGET.