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:

GET_IGNORE_CASE, GET_PATH, :

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

Objekt

Ein Ausdruck, der ein OBJECT ergibt, das Schlüssel-Wert-Paare enthält.

Feldname

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 Feldname 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-Ausdruck

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 Feldname 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 Feldname), 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 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“.