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

Beispiele

Extrahieren des Felds name aus der Tabelle vartab:

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

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

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

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;