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