SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Operatoren zum Extrahieren von JSON-Unterkomponenten

Ab SQLite-Version 3.38.0 (veröffentlicht am 22. Februar 2022) können wir jetzt den -> verwenden und ->> Operatoren zum Extrahieren von Unterkomponenten von JSON-Dokumenten.

Das Ziel dieser Operatoren ist es, mit den entsprechenden MySQL- und PostgreSQL-Operatoren kompatibel zu sein.

Außerdem sind ab SQLite 3.38.0 die JSON-Funktionen jetzt integriert. Daher ist es nicht mehr erforderlich, -DSQLITE_ENABLE_JSON1 zu verwenden Option zur Kompilierzeit, um die JSON-Unterstützung zu aktivieren.

Syntax

Diese Operatoren funktionieren wie folgt:

json -> path
json ->> path

Wobei json ist das JSON-Dokument und path ist der Pfad, den wir daraus extrahieren möchten.

Also stellen wir links vom Operator ein JSON-Dokument bereit und geben rechts davon den Pfad an, den wir extrahieren möchten.

Der Unterschied zwischen diesen Operatoren sieht folgendermaßen aus:

  • Der -> -Operator gibt immer eine JSON-Darstellung der angegebenen Unterkomponente zurück
  • Der ->> -Operator gibt immer eine SQL-Darstellung der angegebenen Unterkomponente zurück

Beispiel für -> Betreiber

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie die -> Betreiber funktioniert:

SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$';

Ergebnis:

{"name":"Wag","type":"Dog"}

In diesem Fall habe ich einen Pfad von '$' angegeben die das gesamte Dokument zurückgibt.

Lassen Sie uns einen anderen Pfad angeben:

SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$.type';

Ergebnis:

"Dog"

Wir können es auch so machen:

SELECT '{ "name" : "Wag", "type" : "Dog" }' -> 'type';

Ergebnis:

"Dog"

Beispiel für ->> Betreiber

Folgendes passiert, wenn wir ->> verwenden stattdessen:

SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.type';

Ergebnis:

Dog

Der Wert wird nicht wie zuvor angegeben. Das liegt daran, dass -> gibt eine JSON-Darstellung der Unterkomponente und ->> zurück gibt eine SQL-Darstellung zurück.

Der ->> Der Operator gibt einen SQL TEXT-, INTEGER-, REAL- oder NULL-Wert zurück, der die ausgewählte Unterkomponente darstellt, oder NULL, wenn die Unterkomponente nicht existiert.

Hier ist ein Beispiel mit einem Array:

SELECT '{ "scores" : [ 9, 7, 5 ] }' ->> '$.scores[2]';

Ergebnis:

5

Wenn der Wert nur aus einem Array besteht, können wir Folgendes tun:

SELECT '[ 9, 7, 5 ]' ->> '2';

Ergebnis:

5

Das gibt das Array-Element am angegebenen Index zurück (in diesem Fall 2).

Arrays sind nullbasiert (die Zählung beginnt bei 0 ), und deshalb 2 gibt das dritte Element zurück.