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

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

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

Синтаксис

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

JSON_VALUE(json_doc, път) 

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

Пример

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

SET @json_document =' { "name":"Wag", "type":"Dog", "weight":20 }';SELECT JSON_VALUE(@json_document, '$.name'); 

Резултат:

+----------------------------------------+| JSON_VALUE(@json_document, '$.name') |+------------------------------------- -+| Размахване |+----------------------------------------+

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

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

Пример:

SET @json_document =' { "name":"Wag", "type":"Dog", "weight":20 }';SELECT JSON_VALUE(@json_document, '$.color'); 

Резултат:

+---------------------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------+

Масиви

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

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

Резултат:

+------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------- ---------+| Най-добро куче |+----------------------------------------------------+ 

Масивите са базирани на нула и така $.awards[1] извлича втория елемент от наградите масив.

Вложени обекти

Ето пример за получаване на стойност от обект, вложен в друг обект:

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

Резултат:

+--------+| Резултат |+--------+| Топ куче |+---------+

Нескаларни стойности

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

Пример:

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

Резултат:

+--------+| Резултат |+--------+| NULL |+--------+

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

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

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

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

Резултат:

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

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

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

ИЗБЕРЕТЕ JSON_VALUE(); 

Резултат:

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

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

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

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи UTC_DATE() в MariaDB

  2. Как работи SHOW CHARACTER SET в MariaDB

  3. Как да използвате механизма за отказване на MaxScale

  4. Как ELT() работи в MariaDB

  5. Инсталирайте MariaDB на Mac