In MySQL der JSON_EXTRACT()
Funktion gibt Daten aus einem JSON-Dokument zurück. Die tatsächlich zurückgegebenen Daten werden durch den Pfad bestimmt, den Sie als Argument angeben.
Sie geben das JSON-Dokument als erstes Argument an, gefolgt vom Pfad der zurückzugebenden Daten. Sie können auch mehrere Pfade angeben, um Daten von mehreren Stellen im Dokument zurückzugeben.
Syntax
Die Syntax lautet wie folgt:
JSON_EXTRACT(json_doc, path[, path] ...)
Wobei json_doc
ist das JSON-Dokument und path
ist der Pfad zum zurückzugebenden Wert.
Wenn es möglich ist, dass diese Argumente mehrere Werte zurückgeben, werden die übereinstimmenden Werte automatisch als Array umbrochen, in der Reihenfolge, die den Pfaden entspricht, die sie erzeugt haben.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel zur Veranschaulichung.
SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 2 | +--------+
In diesem Fall haben wir den Wert des Schlüssels b
zurückgegeben .
Hier ist ein weiteres Beispiel:
SELECT JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | "Bart" | +--------+
Beispiel 2 – Nicht vorhandener Pfad
Wenn Sie einen Pfad angeben, der nicht existiert, wird ein NULL-Wert zurückgegeben.
SELECT JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | NULL | +--------+
Sie erhalten auch einen NULL-Wert, wenn eines der Argumente NULL
ist .
Beispiel 3 – Arrays
Hier ist ein Beispiel mit einem Array.
SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 3 | +--------+
Arrays verwenden eine nullbasierte Nummerierung, daher wird in diesem Fall das dritte Element ersetzt.
Hier ist ein weiteres Array-Beispiel. Dieses Mal geben wir einen Wert aus einem verschachtelten Array zurück.
SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 4 | +--------+
Beispiel 4 – Mehrere Pfade
Sie können mehr als einen Pfad angeben, um Daten von mehreren Stellen innerhalb des JSON-Dokuments zurückzugeben.
Einfaches Beispiel:
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | [2, 4] | +--------+
Beispiel 5 – Ein größeres JSON-Dokument
Hier ist ein Beispiel mit einem etwas größeren JSON-Dokument.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';
Ergebnis:
+---------------------------------------+ | Result | +---------------------------------------+ | ["Homer", 39, ["Eating", "Sleeping"]] | +---------------------------------------+
Bei Bedarf können wir auch ein bestimmtes Element aus dem Array auswählen:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';
Ergebnis:
+---------------------------+ | Result | +---------------------------+ | ["Homer", 39, "Sleeping"] | +---------------------------+