- Kategorien:
Funktionen für semistrukturierte und strukturierte Daten (Extraktion)
GET¶
Extrahiert einen Wert aus einem ARRAY oder einem OBJECT (oder einem VARIANT-Wert, der einen ARRAY- oder OBJECT-Wert enthält).
Die Funktion gibt NULL zurück, wenn eines der Argumente NULL ist.
Hinweis: Diese Funktion darf nicht mit dem DML-Befehl GET verwechselt werden.
- Siehe auch:
Syntax¶
ARRAY (oder VARIANT-Wert, der ein ARRAYenthält)
GET( <array> , <index> )
GET( <variant> , <index> )
OBJECT (oder VARIANT-Wert, der ein OBJECTenthält)
GET( <object> , <field_name> )
GET( <variant> , <field_name> )
MAP
GET( <map> , <key> )
Argumente¶
arrayEin Ausdruck, der einen ARRAY-Wert ergibt.
indexEin Ausdruck, der einen INTEGER-Wert ergibt. Hier wird die Position des Elements angegeben, das aus dem ARRAY abgerufen werden soll. Diese Position ist 0-basiert, nicht 1-basiert.
Wenn der Index auf Werte außerhalb der Array-Grenzen verweist oder das indizierte Element nicht existiert (in dünnbesetzten Arrays):
Wenn
arrayein semistrukturiertes ARRAY ist, gibt diese Funktion NULL zurück.Wenn
arrayein strukturiertes ARRAY ist, tritt ein Fehler auf.
variantEin Ausdruck, der einen VARIANT-Wert ergibt, der entweder ein ARRAY oder ein OBJECT enthält.
objectEin Ausdruck, der ein OBJECT ergibt, das Schlüssel-Wert-Paare enthält.
field_nameEin Ausdruck, der einen VARCHAR-Wert ergibt Dieser gibt den Schlüssel in einem Schlüssel-Wert-Paar an, für den Sie den Wert abrufen möchten.
field_namedarf keine leere Zeichenfolge sein.Wenn
objectein strukturiertes OBJECT-Objekt ist, müssen Sie fürfield_nameeine Konstante angeben.Wenn
objectden angegebenen Schlüssel nicht enthält:Wenn
objectein semistrukturiertes OBJECT ist, gibt die Funktion NULL zurück.Wenn
objectein strukturiertes OBJECT ist, tritt ein Fehler auf.
mapEin Ausdruck, der einen MAP-Wert ergibt.
keyDer Schlüssel in einem Schlüssel-Wert-Paar, für den Sie den Wert abrufen möchten.
Wenn
mapden angegebenen Schlüssel nicht enthält, gibt die Funktion NULL zurück.
Rückgabewerte¶
Der zurückgegebene Wert ist das angegebene Element im ARRAY oder der Wert, der dem angegebenen Schlüssel eines Schlüssel-Wert-Paares in dem OBJECT entspricht.
Wenn das Eingabeobjekt ein semistrukturierter OBJECT-, ARRAY- oder VARIANT-Wert ist, gibt die Funktion einen VARIANT-Wert zurück. Der Datentyp des Wertes ist VARIANT, weil:
In einem ARRAY-Wert jedes Element vom Typ VARIANT ist.
In einem OBJECT-Wert der Wert in jedem Schlüssel-Wert-Paar vom Typ VARIANT ist.
Wenn das Eingabeobjekt ein strukturiertes OBJECT-Objekt, ein strukturiertes ARRAY-Objekt oder ein MAP-Objekt ist, gibt die Funktion einen Wert des Typs zurück, der für das Objekt angegeben ist.
Wenn der Typ des Eingabeobjekts zum Beispiel ARRAY(NUMBER) ist, gibt die Funktion den Wert NUMBER zurück.
Nutzungshinweise¶
GET wendet den Abgleich unter Berücksichtigung der Groß-/Kleinschreibung auf
field_namean. Verwenden Sie für einen Abgleich ohne Berücksichtigung der Groß-/Kleinschreibung GET_IGNORE_CASE.Wenn der erste Parameter vom Typ VARIANT ist, gilt Folgendes:
Wenn der zweite Parameter vom Typ VARCHAR ist (z. B. ein Wert für
field_name), gibt die Funktion NULL zurück, wenn dervariant-Wert kein OBJECT enthält.Wenn der zweite Parameter vom Typ INTEGER ist (z. B. ein Wert für
index), gibt die Funktion NULL zurück, wenn dervariant-Wert kein ARRAY enthält.
Beispiele¶
Erstellen Sie eine Tabelle mit Beispieldaten:
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 | | | | } | +---------+----------------------+-------------------------------------------------+
Extrahieren Sie das erste Element eines ARRAY:
SELECT GET(a, 0) FROM vartab; +-----------+ | GET(A, 0) | |-----------| | 2.71 | +-----------+
Extrahieren Sie unter Angabe des Landes den Namen der Hauptstadt dieses Landes aus einem OBJECT, der Ländernamen und Hauptstädte enthält:
SELECT GET(o, 'Ukraine') FROM vartab; +-------------------+ | GET(O, 'UKRAINE') | |-------------------| | "Kyiv" | +-------------------+
Extrahieren Sie die Temperatur aus einem VARIANT-Wert, der ein OBJECT enthält:
SELECT GET(v, 'temperature') FROM vartab; +-----------------------+ | GET(V, 'TEMPERATURE') | |-----------------------| | 31.5 | +-----------------------+
Ausführlichere Beispiele finden Sie unter Abfragen von semistrukturierten Daten.
Beispiele für die Verwendung von GET mit XMLGET finden Sie unter XMLGET in den Abschnitten „Beispiele“ und „Nutzungshinweise“.