In MariaDB, JSON_QUERY()
ist eine integrierte Funktion, die basierend auf dem bereitgestellten Pfad ein Objekt oder Array aus einem JSON-Dokument zurückgibt.
Es ähnelt dem JSON_VALUE()
Funktion, außer dass sie ein Objekt oder Array anstelle eines Skalars zurückgibt (JSON_VALUE()
gibt einen Skalar zurück).
Syntax
Die Syntax lautet wie folgt:
JSON_QUERY(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 = '
{
"_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');
Ergebnis:
{ "Typ" :"Hund", "Gewicht" :20, "Auszeichnungen" :{ "Florida Dog Awards" :"Top Dog", "New York Marathon" :"Schnellster Hund", "Sumo 2020" :"Größter Hund" }}
Wir können die Punktnotation verwenden, um zum nächsten verschachtelten Objekt zu gelangen:
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');
Ergebnis:
{ „Florida Dog Awards“ :„Platzhirsch“, „New York Marathon“ :„Schnellster Hund“, „Sumo 2020“ :„Größter Hund“}
Arrays
Hier ist ein Beispiel für die Rückgabe eines Arrays:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.awards');
Ergebnis:
+--------------------------------------------------+| JSON_QUERY(@json_document, '$.awards') |+------------------------------------- -----+| [ "Platzhirsch", "Bester Hund", "Größter Hund" ] |+------------------------------- ----------+
Wenn Sie ein tatsächliches Array-Element zurückgeben möchten, versuchen Sie es mit JSON_VALUE()
Funktion.
Nicht vorhandener Pfad
Das Übergeben eines Pfads, der im JSON-Dokument nicht vorhanden ist, führt zu NULL
.
Beispiel:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ]
}
';
SELECT JSON_QUERY(@json_document, '$.type');
Ergebnis:
Skalare Werte
Der Versuch, einen Skalarwert zurückzugeben, gibt NULL
zurück .
Beispiel:
SELECT JSON_QUERY('{ "weight": 10 }', '$.weight');
Ergebnis:
+--------------------------------------------------+| JSON_QUERY('{ "Gewicht":10 }', '$.Gewicht') |+------------------------------ --------------+| NULL |+--------------------------------------------+
Um einen Skalarwert zurückzugeben, verwenden Sie JSON_VALUE()
Funktion.
Null-Argumente
Wenn irgendein Argument NULL
ist , ist das Ergebnis NULL
:
SELECT
JSON_QUERY(null, '$.type'),
JSON_QUERY('{"a":1}', null);
Ergebnis:
+------------------------------------+---------------- -------------+| JSON_QUERY(null, '$.type') | JSON_QUERY('{"a":1}', null) |+-------------------------------------+----- ------------------------+| NULL | NULL |+------------------------------------+----------------- -----------+
Falsche Parameteranzahl
Wenn Sie keine Argumente angeben, wird ein Fehler ausgegeben:
SELECT JSON_QUERY();
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_QUERY“
Das Gleiche gilt, wenn Sie zu wenige oder zu viele Argumente angeben:
SELECT JSON_QUERY('{ "a": 1}');
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion „JSON_QUERY“