Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON_EXTRACT() – Gibt Daten aus einem JSON-Dokument in MySQL zurück

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"] |
+---------------------------+