V MariaDB, JSON_QUERY()
je vestavěná funkce, která vrací objekt nebo pole z dokumentu JSON na základě poskytnuté cesty.
Je to podobné jako JSON_VALUE()
funkce, kromě toho, že vrací objekt nebo pole namísto skalárního (JSON_VALUE()
vrátí skalár).
Syntaxe
Syntaxe vypadá takto:
JSON_QUERY(json_doc, path)
Kde json_doc
je dokument JSON a path
je cesta v dokumentu.
Příklad
Zde je příklad k demonstraci.
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_QUERY(@json_document, '$.details');
Výsledek:
{ "type" :"Pes", "váha" :20, "ocenění" :{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Nejrychlejší pes", "Sumo 2020" :"Největší pes" }}
Můžeme použít tečkovou notaci k přechodu dolů k dalšímu vnořenému objektu:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
';
SELECT JSON_QUERY(@json_document, '$.details.awards');
Výsledek:
{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Nejrychlejší pes", "Sumo 2020" :"Největší pes"}
Pole
Zde je příklad vrácení pole:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.awards');
Výsledek:
+------------------------------------------+| JSON_QUERY(@json_document, '$.awards') |+------------------------------------- -----+| [ "Top pes", "Nejlepší pes", "Největší pes" ] |+-------------------------------- ----------+
Pokud chcete vrátit skutečný prvek pole, vyzkoušejte JSON_VALUE()
funkce.
Neexistující cesta
Předání cesty, která v dokumentu JSON neexistuje, má za následek NULL
.
Příklad:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.type');
Výsledek:
+--------------------------------------+| JSON_QUERY(@json_document, '$.type') |+------------------------------------- -+| NULL |+--------------------------------------+
Skalární hodnoty
Pokus o vrácení skalární hodnoty vrátí NULL
.
Příklad:
SELECT JSON_QUERY('{ "weight": 10 }', '$.weight');
Výsledek:
+--------------------------------------------+| JSON_QUERY('{ "váha":10 }', '$.weight') |+------------------------------ ---------------+| NULL |+--------------------------------------------+Chcete-li vrátit skalární hodnotu, použijte
JSON_VALUE()
funkce.Nulové argumenty
Pokud je některý argument
NULL
, výsledkem jeNULL
:SELECT JSON_QUERY(null, '$.type'), JSON_QUERY('{"a":1}', null);
Výsledek:
+----------------------------+----------------- ------------+| JSON_QUERY(null, '$.type') | JSON_QUERY('{"a":1}', null) |+----------------------------+----- -------------------------+| NULL | NULL |+----------------------------+------------------ -----------+Nesprávný počet parametrů
Pokud nezadáte žádné argumenty, dojde k chybě:
SELECT JSON_QUERY();
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'JSON_QUERY'Je to stejné, když poskytnete příliš málo nebo příliš mnoho argumentů:
SELECT JSON_QUERY('{ "a": 1}');
Výsledek:
CHYBA 1582 (42000):Nesprávný počet parametrů ve volání nativní funkce 'JSON_QUERY'