V MySQL je to JSON_VALUE() funkce extrahuje hodnotu z dokumentu JSON na zadané cestě.
Funkce byla představena v MySQL 8.0.21.
Syntaxe
Syntaxe vypadá takto:
JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error]) Kde:
on_empty:
{NULL | ERROR | DEFAULT value} ON EMPTY
on_error:
{NULL | ERROR | DEFAULT value} ON ERROR Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT JSON_VALUE( '{ "name" : "Wag", "type" : "Dog" }', '$.type' ); Výsledek:
Dog
Pole
Zde je příklad získání hodnoty z pole:
SELECT JSON_VALUE( '{ "name" : "Wag", "scores" : [ 25, 36, 48 ] }', '$.scores[1]' ); Výsledek:
36
Pole jsou založeny na nule, takže 1 vrátí druhý prvek (0 vrátí první).
Vložené dokumenty
Zde je příklad získání hodnoty z vloženého objektu:
SELECT JSON_VALUE(
'{
"_id" : 1,
"details" : {
"name" : "Wag",
"type" : "Dog"
}
}',
'$.details.type'
); Výsledek:
Dog
Typ návratu
Zde je příklad určení návratového typu:
SELECT JSON_VALUE(
'{
"_id" : 1,
"details" : {
"name" : "Wag",
"type" : "Dog"
}
}',
'$.details' RETURNING json
); Výsledek:
{"name": "Wag", "type": "Dog"}
Pokud neurčíte návratový typ, návratový typ je VARCHAR(512) .
Prázdné výsledky
Ve výchozím nastavení, pokud nejsou na zadané cestě nalezena žádná data, NULL je vráceno:
SELECT JSON_VALUE(
'{
"name" : "Wag",
"type" : "Dog"
}',
'$.score'
); Výsledek:
NULL
Následující možnosti však lze použít k explicitnímu určení toho, co se má stát, když na dané cestě nebudou nalezena žádná data:
NULL ON EMPTY:Funkce vracíNULL; toto je výchozí chování.DEFAULT:poskytnutávalueON PRÁZDNÝvalueje vráceno. Typ hodnoty se musí shodovat s typem návratu.ERROR ON EMPTY:Funkce vyvolá chybu.
Příklad:
SELECT JSON_VALUE(
'{
"name" : "Wag",
"type" : "Dog"
}',
'$.score'
DEFAULT 'Nothing found' ON EMPTY
); Výsledek:
Nothing found
Chyby
Následující lze použít k určení, co se stane, když dojde k chybě:
NULL ON ERROR:JSON_VALUE()vrátíNULL; toto je výchozí chování.DEFAULT:Toto je vrácená hodnota; jeho hodnota se musí shodovat s hodnotou návratového typu.valueON CHYBAERROR ON ERROR:Došlo k chybě.
Pokud je použit, ON EMPTY musí předcházet jakékoli ON ERROR doložka. Pokud je zadáte ve špatném pořadí, dojde k chybě syntaxe.
Indexy
Jak je uvedeno v poznámkách k vydání MySQL 8.0.21, JSON_VALUE() zjednodušuje vytváření indexů na JSON sloupců. Volání JSON_VALUE( je ekvivalentní volání json_doc , path VRACENÍ type )CAST( JSON_UNQUOTE( JSON_EXTRACT( .json_doc , path ) ) JAKO type )
Zde je příklad použitý v poznámkách k vydání:
CREATE TABLE inventory(
items JSON,
INDEX i1 ( (JSON_VALUE(items, '$.name' RETURNING CHAR(50))) ),
INDEX i2 ( (JSON_VALUE(items, '$.price' RETURNING DECIMAL(5,2))) ),
INDEX i3 ( (JSON_VALUE(items, '$.quantity' RETURNING UNSIGNED)) )
);