Kategorien:

Funktionen für semistrukturierte und strukturierte Daten (Extraktion)

GET_PATH, :

Extrahiert einen Wert aus semistrukturierten Daten unter Verwendung eines Pfadnamens.

GET_PATH ist eine Variante von GET, die den Namen einer VARIANT-, OBJECT- oder ARRAY-Spalte als erstes Argument verwendet und den Wert des Felds oder Elements anhand des Pfadnamens extrahiert, der als zweites Argument angegeben wurde.

Syntax

GET_PATH( <column_identifier> , '<path_name>' )

<column_identifier>:<path_name>

:( <column_identifier> , '<path_name>' )
Copy

Argumente

column_identifier

Ein Ausdruck, der eine OBJECT-, ARRAY- oder VARIANT-Spalte ergibt.

path_name

Ein Ausdruck, der einen VARCHAR-Wert ergibt Gibt den Pfad zu dem Feld oder Element an, das Sie extrahieren möchten.

Bei strukturierte Typen müssen Sie eine Zeichenfolgenkonstante angeben.

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_PATH entspricht einer Kette von GET-Funktionen. Es wird NULL zurückgegeben, wenn der Pfadname keinem Element entspricht.

  • Die Syntax für Pfadnamen besteht aus standardmäßiger JavaScript-Notation und beinhaltet eine Verkettung von Feldnamen (Bezeichnern), denen Punkte (z. B. .) und Indexoperatoren (z. B. [<Index>]) vorangestellt sind:

    • Beim ersten Feldnamen muss der führende Punkt nicht angegeben werden.

    • Die Indexwerte in den Indexoperatoren können nicht negative Dezimalzahlen (bei Arrays) bzw. Zeichenfolgenliterale in einfachen oder doppelten Anführungszeichen sein (bei Objektfeldern).

    Weitere Details dazu finden Sie unter Abfragen von semistrukturierten Daten.

  • Außerdem unterstützt GET_PATH eine syntaktische Verknüpfung mit dem Zeichen : als Extraktionsoperator, der den Spaltennamen (der Punkte enthalten kann) vom Pfadbezeichner trennt.

    Zur Wahrung der syntaktischen Konsistenz unterstützt die Pfadnotation auch Bezeichner in SQL-artigen doppelten Anführungszeichen sowie die Verwendung von : als Pfadtrennzeichen.

    Wenn der Operator : verwendet wird, können beliebige Ganzzahl- oder Zeichenfolge-Unterausdrücke in [] aufgenommen werden.

Beispiele

Extrahieren des Felds name aus der Tabelle vartab:

SELECT GET_PATH(v, 'attr[0].name') FROM vartab;
Copy

Das folgende Beispiel entspricht dem ersten Beispiel, verwendet aber : als Extraktionsoperator:

SELECT v:attr[0].name FROM vartab;
Copy

Der Extraktionsoperator : ist links-assoziativ. Im obigen Beispiel hat die Verwendung von v:attr[0]:name also die gleiche Wirkung wie : auf der linken Seite: Es wird ein Variantenwert erzeugt (welcher ein Objekt enthält), aus dem mit dem Extraktionsoperator : auf der rechten Seite der Wert des Felds name extrahiert wird.

Dies entspricht dem ersten Beispiel, jedoch werden hier wie in SQL die Bezeichner in doppelte Anführungszeichen gesetzt und : als Pfadseparator verwendet:

SELECT GET_PATH('v:"attr"[0]:"name"') FROM vartab;
Copy