- 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¶
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 Array-Grenzen verweist oder das indizierte Element nicht existiert (in dünnbesetzten Arrays):
Wenn
array
ein semistrukturiertes ARRAY ist, gibt diese Funktion NULL zurück.Wenn
array
ein strukturiertes ARRAY ist, tritt ein Fehler auf.
variant
Ein Ausdruck, der einen VARIANT-Wert ergibt, der entweder ein ARRAY oder ein OBJECT enthält.
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.
field_name
darf keine leere Zeichenfolge sein.Wenn
object
ein strukturiertes OBJECT-Objekt ist, müssen Sie fürfield_name
eine Konstante angeben.Wenn
object
den angegebenen Schlüssel nicht enthält:Wenn
object
ein semistrukturiertes OBJECT ist, gibt die Funktion NULL zurück.Wenn
object
ein strukturiertes OBJECT ist, tritt ein Fehler auf.
map
Ein Ausdruck, der einen MAP-Wert ergibt.
key
Der Schlüssel in einem Schlüssel-Wert-Paar, für den Sie den Wert abrufen möchten.
Wenn
map
den 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 semistrukturiertes OBJECT-, ARRAY- oder VARIANT-Objekt ist, gibt die Funktion ein VARIANT-Objekt zurück. 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.
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 beispielsweise ARRAY(NUMBER) ist, gibt die Funktion ein NUMBER-Objekt zurück.
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“.