Catégories :

Fonctions de données semi-structurées (tableau/objet)

OBJECT_KEYS

Renvoie un tableau contenant la liste des clés du niveau le plus élevé de l’objet d’entrée.

Syntaxe

OBJECT_KEYS( <object> )

Arguments

object

La valeur pour laquelle vous souhaitez les clés. La valeur d’entrée doit être l’une des suivantes :

Renvoie

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

Notes sur l’utilisation

  • Si l’objet contient des objets imbriqués (par exemple, des objets dans des objets), cela renvoie uniquement les clés du niveau le plus élevé.

Exemples

Exemple de base

L’exemple suivant montre que OBJECT_KEYS fonctionne à la fois avec un OBJECT et un VARIANT qui contient une valeur de type OBJECT.

Créez une table contenant des colonnes de types OBJECT et VARIANT.

CREATE TABLE objects_1 (id INTEGER, object1 OBJECT, variant1 VARIANT);

Valeurs INSERT :

INSERT INTO objects_1 (id, object1, variant1) 
  SELECT
    1,
    OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3),
    TO_VARIANT(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3))
    ;

Récupérez les clés du OBJECT et du VARIANT :

SELECT OBJECT_KEYS(object1), OBJECT_KEYS(variant1) 
    FROM objects_1
    ORDER BY id;
+----------------------+-----------------------+
| OBJECT_KEYS(OBJECT1) | OBJECT_KEYS(VARIANT1) |
|----------------------+-----------------------|
| [                    | [                     |
|   "a",               |   "a",                |
|   "b",               |   "b",                |
|   "c"                |   "c"                 |
| ]                    | ]                     |
+----------------------+-----------------------+

Exemple d’objets imbriqués

Cet exemple montre que si l’objet contient des objets imbriqués, seules les clés du niveau le plus élevé sont renvoyées.

SELECT OBJECT_KEYS (
           PARSE_JSON (
               '{
                    "level_1_A": {
                                 "level_2": "two"
                                 },
                    "level_1_B": "one"
                    }'
               )
           ) AS keys
    ORDER BY 1;
+----------------+
| KEYS           |
|----------------|
| [              |
|   "level_1_A", |
|   "level_1_B"  |
| ]              |
+----------------+
Revenir au début