Kategorien:

Semistrukturierte Datenfunktionen (Extraktion)

GET_PATH , :

Extrahiert einen Wert aus semistrukturierten Daten unter Verwendung eines Pfadnamens.

GET_PATH ist eine Variante von GET; sie nutzt einen VARIANT-, OBJECT- oder ARRAY-Spaltennamen als erstes Argument und extrahiert den VARIANT-Wert des Felds oder Elements anhand des Pfadnamens, der als zweites Argument angegeben wurde.

Syntax

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

<column_identifier>:<path_name>

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

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 Zeichenfolgenunterausdrücke in [] aufgenommen werden.

Beispiele

Extrahieren des Felds name aus der Tabelle vartab:

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

Wie im ersten Beispiel, aber mit : als Extraktionsoperator:

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

Beachten Sie, dass der Extraktionsoperator : linksassoziativ ist. Im obigen Beispiel hat die Verwendung von v:attr[0]:name also die gleiche Wirkung wie der : links: Es wird ein Variantenwert erzeugt (welcher ein Objekt enthält), aus dem : des rechten Extraktionsoperators den Wert des Felds name extrahiert.

Wie im ersten Beispiel, jedoch unter Verwendung von Bezeichnern mit SQL-artigen doppelten Anführungszeichen sowie : als Pfadtrennzeichen:

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