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

MariaDB JSON_QUERY() Обяснено

В MariaDB, JSON_QUERY() е вградена функция, която връща обект или масив от JSON документ въз основа на предоставения път.

Той е подобен на JSON_VALUE() функция, с изключение на това, че връща обект или масив вместо скалар (JSON_VALUE() връща скалар).

Синтаксис

Синтаксисът е така:

JSON_QUERY(json_doc, път) 

Където json_doc е JSON документът и път е път в документа.

Пример

Ето пример за демонстрация.

SET @json_document =' { "_id" :1, "name" :"Wag", "details" :{ "type" :"Dog", "weight" :20, "awards" :{ „Награди за кучета във Флорида“ :„Най-добро куче“, „Нюйоркски маратон“ :„Най-бързото куче“, „Сумо 2020“ :„Най-голямото куче“ } } }';SELECT JSON_QUERY(@json_document, '$.details'); 

Резултат:

{ "type" :"Dog", "weight" :20, "awards" :{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Най-бързото куче", "Sumo 2020" :„Най-голямото куче“ }}

Можем да използваме нотация с точки, за да преминем към следващия вложен обект:

SET @json_document =' { "_id" :1, "name" :"Wag", "details" :{ "type" :"Dog", "weight" :20, "awards" :{ „Награди за кучета във Флорида“ :„Най-добро куче“, „Ню Йорк маратон“ :„Най-бързото куче“, „Сумо 2020“ :„Най-голямото куче“ } } }';ИЗБЕРЕТЕ JSON_QUERY(@json_document, '$.details.awards'); 

Резултат:

{ „Награди за кучета на Флорида“ :„Най-голямо куче“, „Ню Йорк маратон“ :„Най-бързото куче“, „Сумо 2020“ :„Най-голямото куче“}

Масиви

Ето пример за връщане на масив:

SET @json_document =' { "_id" :1, "awards" :[ "Най-добро куче", "Най-добро куче", "Най-голямо куче" ] }';SELECT JSON_QUERY(@json_document, '$. награди'); 

Резултат:

+------------------------------------+| JSON_QUERY(@json_document, '$.awards') |+------------------------------------- -----+| [ "Топ куче", "Най-добро куче", "Най-голямо куче" ] |+-------------------------------- ----------+

Ако искате да върнете действителен елемент от масив, опитайте JSON_VALUE() функция.

Несъществуващ път

Предаването на път, който не съществува в JSON документа, води до NULL .

Пример:

SET @json_document =' { "_id" :1, "awards" :[ "Най-добро куче", "Най-добро куче", "Най-голямо куче" ] }';SELECT JSON_QUERY(@json_document, '$. тип'); 

Резултат:

+----------------------------------------+| JSON_QUERY(@json_document, '$.type') |+------------------------------------- -+| NULL |+----------------------------------------+

Скаларни стойности

Опитът за връщане на скаларна стойност връща NULL .

Пример:

SELECT JSON_QUERY('{ "тегло":10 }', '$.weight'); 

Резултат:

+----------------------------------------------+| JSON_QUERY('{ "тегло":10 }', '$.тегло') |+------------------------------ --------------+| NULL |+-----------------------------------------------------+ 

За да върнете скаларна стойност, използвайте JSON_VALUE() функция.

Нулеви аргументи

Ако някой аргумент е NULL , резултатът е NULL :

SELECT JSON_QUERY(null, '$.type'), JSON_QUERY('{"a":1}', null); 

Резултат:

+----------------------------+---------------- ------------+| JSON_QUERY(null, '$.type') | JSON_QUERY('{"a":1}', null) |+----------------------------+----- ------------------------+| NULL | NULL |+----------------------------+-------------- -----------+

Неправилен брой параметри

Предоставянето на без аргументи води до грешка:

SELECT JSON_QUERY(); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „JSON_QUERY“

Същото е, когато предоставите твърде малко или твърде много аргументи:

SELECT JSON_QUERY('{ "a":1}'); 

Резултат:

ГРЕШКА 1582 (42000):Неправилен брой на параметрите в извикването на естествена функция „JSON_QUERY“

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изграждане на горещ режим на готовност на Amazon AWS с помощта на MariaDB Cluster

  2. Как CHAR_LENGTH() работи в MariaDB

  3. 4 функции, които връщат минутите от времева стойност в MariaDB

  4. MariaDB Единици за дата и време

  5. 6 начина да добавите година към дата в MariaDB