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“