sql-json-pfadausdruck

Ein SQL/JSON-Pfadausdruck definiert den Zugriff auf die Elemente eines JSON-Dokuments.

sql-json-path-expression

Read syntax diagramSkip visual syntax diagramlaxstrictsql-json-accessor-expression
sql-json-accessor-expression
Read syntax diagramSkip visual syntax diagram$.json-path-key-name.*array-specifier
array-specifier
Read syntax diagramSkip visual syntax diagram[number*]
lax oder strict
Gibt den JSON-Pfadmodus an.
lax
Gibt an, dass bestimmte strukturelle Fehler toleriert werden, wenn das aktuelle JSON-Dokument navigiert wird, einschließlich der folgenden strukturellen Fehler:
  • Automatische Unverschachtelung von Arrays.
  • Automatisches Umbrechen skalarer Werte als Array mit einem einzelnen Element, wenn auf sie als Array verwiesen wird.
  • Angabe nicht vorhandener Elemente, einschließlich Feldgruppenindexwerten, die außerhalb des gültigen Bereichs liegen.

Wenn ein Element nicht vorhanden ist, gibt der SQL/JSON-Pfadausdruck eine leere Zeichenfolge zurück, die entsprechend den Optionen verarbeitet wird, die in der Klausel ON EMPTY einer Funktion angegeben sind.

strikt
Gibt an, dass ein Fehler gemeldet wird, wenn der angegebene Pfadausdruck nicht zum Navigieren im aktuellen JSON-Dokument verwendet wird. Der Fehler wird gemäß der aktuellen Klausel ON ERROR behandelt.
sql-json-zugriffsmechanismusausdruck
$
Gibt den Anfang des Kontextelements an, auf das der Rest des SQL/JSON-Pfadausdrucks angewendet wird.
json-pfad-schlüsselname
Gibt den Schlüsselnamen eines Schlüssel: Wert-Paars im JSON-Dokument an.
*
Gibt an, dass die Werte für alle Schlüssel als SQL/JSON-Sequenz zurückgegeben werden.
Array-Kennung
Gibt die Indexwerte an, die auf ein Array angewendet werden sollen Das erste Element des Arrays hat den Index 0. Wenn der angegebene Index außerhalb des gültigen Bereichs liegt, wird er als Fehler betrachtet.
Anzahl
Eine ganzzahlige Konstante ohne Vorzeichen, die ein Array-Element darstellt. Das erste Element des Arrays hat den Index 0.
*
Gibt an, dass alle Array-Elemente ausgewählt sind
Spezielle Semantik sind einigen Zeichen zugeordnet, wenn sie als Teil eines SQL/JSON-Pfadausdrucks verwendet werden:
.
Wird verwendet, um zur nächsten Ebene im JSON-Dokument zu wechseln.
*
Wird für den Abgleich aller Schlüssel auf der aktuellen Ebene verwendet.
[und]
Wird zur Angabe eines Index eines Arrays verwendet.

Damit diese Zeichen in json-path-key-nameverwendet werden können, verwenden Sie vor diesen Zeichen einen Escapezeichen-Backslash (\), um anzugeben, dass diese Zeichen Teil des Schlüsselnamens sind.

Beispiele

  1. Dieses Beispiel basiert auf dem folgenden JSON-Dokument:
    { "isbn": "123-456-222", "author": [ { "name":"Jones"},{"name":"Smith"}]}
    Die folgende Tabelle zeigt die Ergebnisse der Verwendung verschiedener SQL/JSON-Pfadausdrücke für den Zugriff auf Elemente im JSON-Dokument:
    Pfad Anzahl der Übereinstimmungen Übereinstimmungen
    $.isbn 1 „123-456-222“
    $.author [0] .name 1 "Schmidt"
    $.author [1] .name 1 "Schmidt"
  2. Dieses Beispiel basiert auf dem folgenden JSON-Dokument:
    {
      "person"   : {"firstname":"Fred", "lastname":"Gauss"},
      "where"    : "General Products",
      "friends"  : [ { "name": "Lili","rank": 5 }, {"name": "Hank", "rank": 7} ],
      "work.area": "Finance"
    }
    Die folgende Tabelle zeigt die Ergebnisse der Verwendung verschiedener SQL/JSON-Pfadausdrücke für den Zugriff auf Elemente im JSON-Dokument:
    Pfad Anzahl der Übereinstimmungen Übereinstimmungen
    $.person.lastname 1 "Gauß"
    $.freunde 1 [ { "name": "Lili", "rank": 5 }, { "name": "Hank", "rank": 7} ]
    $. * .Vorname 1 „Fred“
    $.person.* 2 "Fred" und "Gauss"
    $.Freunde [*] 2 { "name": "Lili", "rank": 5 } und { "name": "Hank", "rank": 7}
    $.friends [*] .rang 2 5 und 7
    $.work.area 0  
    $.work\.area 1 "Finanzen"
  3. Dieses Beispiel basiert auf dem folgenden JSON-Dokument:
    { "a":[{"b1":10}, {"b2":11}], "c":"hi" }
    Die folgende Tabelle zeigt die Ergebnisse der Verwendung verschiedener SQL/JSON-Pfadausdrücke für den Zugriff auf Elemente im JSON-Dokument:
    Pfad Übereinstimmungen Anmerkung
    Lax $.a.b1 10 Automatische Unverschachtelung des Array-Elements bei 'a'. Wird als 'a[*]'behandelt
    Strikte $.a.b1 Fehler Keine automatische Unverschachtelung des Arrays.
    lax $.c [0] "Hi" Automatische Umhüllung des skalaren Werts in ein Array mit einem Element.
    strict $.c [0] Fehler Kein automatisches Umschließen des skalaren Werts in ein Array mit einem Element.
  4. Dieses Beispiel veranschaulicht den Unterschied zwischen dem Verhalten von JSON_VALUE und JSON_QUERY. Dieses Beispiel basiert auf dem folgenden JSON-Dokument:
    { "a": [1,2], "b": { "c1":1, "c2":2 } }
    
    Dieses Beispiel basiert auf den folgenden Pfadergebnissen:
    Pfadausdruck (Path Expression) Anzahl der zurückgegebenen Werte zurückgegebene Werte
    $.a Einzel [1,2]
    $.b.* Mehrere
    1
    2
    Die folgende Tabelle zeigt die Ergebnisse der Verwendung verschiedener SQL/JSON-Pfadausdrücke für den Zugriff auf Elemente im JSON-Dokument:
    Bediener $.a $.b.* Anmerkung
    JSON-WERT Fehler Fehler Fehler beim Zugriff auf Array-Typ und mehrere Übereinstimmungen.
    JSON_QUERY OHNE ARRAY-WRAPPER [1,2] Fehler Fehler bei mehreren Werten ohne Array-Wrapper
    JSON_QUERY MIT UNBEDINGTEM ARRAY-WRAPPER [ [1,2] ] [1,2] Sie müssen einen Array-Wrapper verwenden, auch wenn der Typ 'array' ist.
    JSON_QUERY MIT BEDINGTEM ARRAY-WRAPPER [1,2] [1,2] Ein Array-Wrapper ist nicht erforderlich, wenn der Typ 'array' ist.