Kategorien:

Funktionen für semistrukturierte und strukturierte Daten (Array/Objekt)

OBJECT_KEYS

Gibt ein Array zurück, das die Liste der Schlüssel auf oberster Ebene des Eingabeobjekts enthält.

Syntax

OBJECT_KEYS( <object> )
Copy

Argumente

object

Der Wert, für den Sie die Schlüssel benötigen. Folgende Eingabewerte sind möglich:

  • Ein OBJECT-Wert

  • Ein VARIANT-Wert, der einen Wert vom Typ OBJECT enthält

Rückgabewerte

Die Funktion gibt ein ARRAY zurück, das die Schlüssel enthält.

Wenn object ein -strukturiertes OBJECT ist, gibt die Funktion ein ARRAY(VARCHAR) zurück.

Nutzungshinweise

  • Wenn das Objekt verschachtelte Objekte enthält (z. B. Objekte innerhalb von Objekten), werden nur die Schlüssel der obersten Ebene zurückgegeben.

Beispiele

Grundlegendes Beispiel:

Das nächste Beispiel zeigt OBJECT_KEYS, die sowohl ein OBJECT verwenden als auch ein VARIANT, der einen Wert vom Typ OBJECT enthält.

Erstellen Sie eine Tabelle, die Spalten vom Typ OBJECT und VARIANT enthält.

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

INSERT-Werte:

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))
    ;
Copy

Rufen Sie die Schlüssel sowohl für OBJECT als auch VARIANT ab:

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"                 |
| ]                    | ]                     |
+----------------------+-----------------------+
Copy

Beispiel für verschachtelte Objekte

In diesem Beispiel wird zeigt, dass bei einem Objekt, das verschachtelte Objekte enthält, nur die Schlüssel der obersten Ebene zurückgegeben werden.

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"  |
| ]              |
+----------------+
Copy