- Kategorien:
Semistrukturierte Datenfunktionen (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> )
Argumente¶
object
Ein Ausdruck, der ein OBJECT ergibt, das Schlüssel-Wert-Paare enthält.
field_name
Ein 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.
Wenn OBJECT den angegebenen Schlüssel nicht enthält, gibt diese Funktion NULL zurück.
Der
field_name
darf keine leere Zeichenfolge sein.array
Ein Ausdruck, der einen ARRAY-Wert ergibt.
index
Ein 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 Arraygrenzen verweist oder das indizierte Element nicht existiert (in dünnbesetzten Arrays), gibt die Funktion NULL zurück.
variant
Ein Ausdruck, der einen VARIANT-Wert ergibt, der entweder ein ARRAY oder ein OBJECT enthält.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Werts ist VARIANT.
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. Der Datentyp ist VARIANT aus folgendem Grund:
In einem ARRAY ist jedes Element vom Typ VARIANT.
In einem OBJECT ist der Wert in jedem Schlüssel-Wert-Paar vom Typ VARIANT.
Nutzungshinweise¶
GET wendet den Abgleich unter Berücksichtigung der Groß-/Kleinschreibung auf
field_name
an. 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“.