- 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 - arrayein semistrukturiertes ARRAY ist, gibt diese Funktion NULL zurück.
- Wenn - arrayein 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_namedarf keine leere Zeichenfolge sein.- Wenn - objectein strukturiertes OBJECT-Objekt ist, müssen Sie für- field_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.
 
- 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 - 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 der- variant-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 der- variant-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“.