- Catégories :
Fonctions de données semi-structurées et 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 :
Syntaxe¶
ARRAY (ou VARIANT contenant un ARRAY)
GET( <array> , <index> )
GET( <variant> , <index> )
OBJECT (ou VARIANT contenant un OBJECT)
GET( <object> , <field_name> )
GET( <variant> , <field_name> )
MAP
GET( <map> , <key> )
Arguments¶
arrayUne expression qui donne un ARRAY.
indexUne 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é) :
Si
arrayest un ARRAY semi-structuré, cette fonction renvoie NULL.Si
arrayest un ARRAY structuré, il se produit une erreur.
variantUne expression qui évalue un VARIANT qui contient soit un ARRAY, soit un OBJECT.
objectUne expression qui donne un OBJECT contenant des paires clé-valeur.
field_nameUne 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.
field_namene doit pas être une chaîne vide.Si
objectest un OBJECT structuré, vous devez spécifier une constante pourfield_name.Si
objectne contient pas la clé spécifiée :Si
objectest un OBJECT semi-structuré, la fonction renvoie NULL.Si
objectest un OBJECT structuré, il se produit une erreur.
mapUne expression qui est évaluée sur une MAP.
keyLa clé d’une paire clé-valeur pour laquelle vous voulez récupérer la valeur.
Si
mapne contient pas la clé spécifiée, la fonction renvoie NULL.
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 une valeur OBJECT, ARRAY ou VARIANT semi-structurée, la fonction renvoie une valeur VARIANT. Le type de données de la valeur est VARIANT car :
Dans une valeur ARRAY, chaque élément est de type VARIANT.
Dans une valeur OBJECT, la valeur de chaque paire clé-valeur est du 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 une valeur NUMBER.
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 sivariantne contient pas d’OBJECT.Si le deuxième paramètre est de type INTEGER (par exemple, un
index), la fonction renvoie NULL sivariantne 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)) ;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 | | | | } | +---------+----------------------+-------------------------------------------------+
Extraire le premier élément d’un ARRAY :
SELECT GET(a, 0) FROM vartab; +-----------+ | GET(A, 0) | |-----------| | 2.71 | +-----------+
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" | +-------------------+
Extraire la température d’un VARIANT qui contient un OBJECT :
SELECT GET(v, 'temperature') FROM vartab; +-----------------------+ | GET(V, 'TEMPERATURE') | |-----------------------| | 31.5 | +-----------------------+
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.