SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Operatory do wyodrębniania podkomponentów JSON

Począwszy od wersji SQLite 3.38.0 (wydanej 22 lutego 2022), możemy teraz używać -> i ->> operatorów do wyodrębniania podkomponentów dokumentów JSON.

Celem tych operatorów jest zapewnienie zgodności z równoważnymi operatorami MySQL i PostgreSQL.

Ponadto, począwszy od SQLite 3.38.0, funkcje JSON są teraz wbudowane. Dlatego nie jest już konieczne używanie -DSQLITE_ENABLE_JSON1 opcja czasu kompilacji, aby włączyć obsługę JSON.

Składnia

Sposób działania tych operatorów jest następujący:

json -> path
json ->> path

Gdzie json jest dokumentem JSON i ścieżką to ścieżka, którą chcemy z niej wyodrębnić.

Podajemy więc dokument JSON po lewej stronie operatora i określamy ścieżkę, którą chcemy wyodrębnić po jego prawej stronie.

Różnica między tymi operatorami wygląda następująco:

  • -> operator zawsze zwraca reprezentację JSON określonego podkomponentu
  • ->> operator zawsze zwraca reprezentację SQL określonego podkomponentu

Przykład -> Operator

Oto prosty przykład pokazujący, jak -> operator pracuje:

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

Wynik:

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

W tym przypadku określiłem ścieżkę '$' który zwraca cały dokument.

Określmy inną ścieżkę:

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

Wynik:

"Dog"

Możemy to również zrobić w ten sposób:

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

Wynik:

"Dog"

Przykład ->> Operator

Oto, co się dzieje, gdy używamy ->> zamiast tego:

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

Wynik:

Dog

Wartość nie jest cytowana tak jak wcześniej. To dlatego, że -> zwraca reprezentację JSON podkomponentu i ->> zwraca reprezentację SQL.

->> operator zwraca wartość SQL TEXT, INTEGER, REAL lub NULL, która reprezentuje wybrany podskładnik, lub NULL, jeśli podskładnik nie istnieje.

Oto przykład z tablicą:

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

Wynik:

5

Jeśli wartość składa się wyłącznie z tablicy, możemy to zrobić:

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

Wynik:

5

To zwraca element tablicy o określonym indeksie (w tym przypadku 2).

Tablice są od zera (liczenie zaczyna się od 0 ) i dlatego 2 zwraca trzeci element.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak czytać i aktualizować bazę danych SQLite za pomocą ListView w Androidzie?

  2. Tabela bazy danych Android SQLite nie jest tworzona

  3. Zbuduj książkę kontaktów za pomocą Pythona, PyQt i SQLite

  4. Jak buforować przeanalizowany JSON do użytku w trybie offline

  5. Jak uzyskać wczorajszą datę w SQLite?