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:

GET_IGNORE_CASE, GET_PATH, :

Syntax

ARRAY (oder VARIANT-Wert, der ein ARRAYenthält)

GET( <array> , <index> )

GET( <variant> , <index> )
Copy

OBJECT (oder VARIANT-Wert, der ein OBJECTenthält)

GET( <object> , <field_name> )

GET( <variant> , <field_name> )
Copy

MAP

GET( <map> , <key> )
Copy

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ür field_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 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_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 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))
    ;
Copy
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                        |
|         |                      | }                                               |
+---------+----------------------+-------------------------------------------------+
Copy

Extrahieren Sie das erste Element eines ARRAY:

SELECT GET(a, 0) FROM vartab;
+-----------+
| GET(A, 0) |
|-----------|
| 2.71      |
+-----------+
Copy

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

Extrahieren Sie die Temperatur aus einem VARIANT-Wert, der ein OBJECT enthält:

SELECT GET(v, 'temperature') FROM vartab;
+-----------------------+
| GET(V, 'TEMPERATURE') |
|-----------------------|
| 31.5                  |
+-----------------------+
Copy

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“.