SQLite
 sql >> база данни >  >> RDS >> SQLite

Оператори за извличане на JSON подкомпоненти

Започвайки с версия на SQLite 3.38.0 (издадена на 22 февруари 2022 г.), вече можем да използваме -> и ->> оператори за извличане на подкомпоненти на JSON документи.

Целта на тези оператори е да бъдат съвместими с еквивалентните MySQL и PostgreSQL оператори.

Също така, като се започне от SQLite 3.38.0, функциите на JSON вече са вградени. Следователно вече не е необходимо да използвате -DSQLITE_ENABLE_JSON1 опция по време на компилиране, за да активирате поддръжката на JSON.

Синтаксис

Начинът на работа на тези оператори е следният:

json -> path
json ->> path

Където json е JSON документът и path е пътят, който искаме да извлечем от него.

Така че предоставяме JSON документ отляво на оператора и указваме пътя, който искаме да извлечем, отдясно.

Разликата между тези оператори е следната:

  • -> операторът винаги връща JSON представяне на посочения подкомпонент
  • ->> операторът винаги връща SQL представяне на посочения подкомпонент

Пример за -> Оператор

Ето един прост пример, за да демонстрирате как -> оператор работи:

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

Резултат:

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

В този случай посочих път на '$' който връща целия документ.

Нека посочим друг път:

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

Резултат:

"Dog"

Можем да го направим и така:

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

Резултат:

"Dog"

Пример за ->> Оператор

Ето какво се случва, когато използваме ->> вместо това:

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

Резултат:

Dog

Стойността не е цитирана, както беше преди. Това е защото -> връща JSON представяне на подкомпонента и ->> връща SQL представяне.

->> операторът връща SQL TEXT, INTEGER, REAL или NULL стойност, която представлява избрания подкомпонент, или NULL, ако подкомпонентът не съществува.

Ето пример с масив:

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

Резултат:

5

Ако стойността се състои само от масив, можем да направим това:

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

Резултат:

5

Това връща елемента на масива с посочения индекс (в този случай 2).

Масивите са базирани на нула (броенето започва от 0 ), и затова 2 връща третия елемент.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблицата не се създава sqlite android

  2. Как да извлечем изображение от база данни на SQLite?

  3. Показване на данни в RecyclerView

  4. Използване на Robolectric с SQLiteAssetHelper

  5. Кога трябва да затворя курсор и db?