In MariaDB, JSON_VALUE() ist eine integrierte Funktion, die einen Skalarwert aus einem JSON-Dokument zurückgibt. Genauer gesagt gibt es den Skalar zurück, der durch den bereitgestellten Pfad angegeben ist.
Syntax
Die Syntax lautet wie folgt:
JSON_VALUE(json_doc, path)
Wobei json_doc ist das JSON-Dokument und path ist ein Pfad innerhalb des Dokuments.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_VALUE(@json_document, '$.name'); Ergebnis:
Nicht vorhandener Pfad
Das Übergeben eines Pfads, der im JSON-Dokument nicht vorhanden ist, führt zu NULL .
Beispiel:
SET @json_document = '
{
"name": "Wag",
"type": "Dog",
"weight": 20
}
';
SELECT JSON_VALUE(@json_document, '$.color'); Ergebnis:
+--------------------------+| JSON_VALUE(@json_document, '$.color') |+------------------------------------- --+| NULL |+---------------------------------------------------+
Arrays
Hier ist ein Beispiel für die Rückgabe von Daten aus einem Array:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_VALUE(@json_document, '$.awards[1]'); Ergebnis:
+--------------------------------------------------+| JSON_VALUE(@json_document, '$.awards[1]') |+---------------------------------------------- ---------+| Bester Hund |+---------------------------------------------------+
Arrays sind nullbasiert, also $.awards[1] extrahiert das zweite Element der awards Array.
Verschachtelte Objekte
Hier ist ein Beispiel für das Abrufen eines Werts von einem Objekt, das in einem anderen Objekt verschachtelt ist:
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_VALUE(
@json_document,
'$.details.awards.Florida Dog Awards'
) AS Result; Ergebnis:
+---------+| Ergebnis |+---------+| Platzhirsch |+---------+
Nichtskalare Werte
Der Versuch, einen nicht skalaren Wert (z. B. ein Objekt oder ein Array) zurückzugeben, gibt NULL zurück .
Beispiel:
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_VALUE(
@json_document,
'$.details.awards'
) AS Result; Ergebnis:
+--------+| Ergebnis |+--------+| NULL |+--------+
Um einen nicht skalaren Wert zurückzugeben, verwenden Sie JSON_QUERY() Funktion oder die JSON_EXTRACT() Funktion.
Null-Argumente
Wenn irgendein Argument NULL ist , ist das Ergebnis NULL :
SELECT
JSON_VALUE(null, '$.type'),
JSON_VALUE('{"a":1}', null); Ergebnis:
+------------------------------------+---------------- -------------+| JSON_VALUE(null, '$.type') | JSON_VALUE('{"a":1}', null) |+------------------------------------+----- ------------------------+| NULL | NULL |+------------------------------------+----------------- -----------+ Falsche Parameteranzahl
Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:
SELECT JSON_VALUE(); Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_VALUE“
Das Gleiche gilt, wenn Sie zu wenige oder zu viele Argumente angeben:
SELECT JSON_VALUE('{ "a": 1}'); Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_VALUE“