sql >> Databasteknik >  >> RDS >> Mysql

JSON_EXTRACT() – Returnera data från ett JSON-dokument i MySQL

I MySQL, JSON_EXTRACT() funktion returnerar data från ett JSON-dokument. Den faktiska data som returneras bestäms av sökvägen du anger som argument.

Du tillhandahåller JSON-dokumentet som det första argumentet, följt av sökvägen till data som ska returneras. Du kan också tillhandahålla flera sökvägar för att returnera data från flera ställen i dokumentet.

Syntax

Syntaxen ser ut så här:

JSON_EXTRACT(json_doc, path[, path] ...)

Där json_doc är JSON-dokumentet och path är sökvägen till värdet som ska returneras.

Om det är möjligt att dessa argument kan returnera flera värden, raderas de matchade värdena automatiskt som en array, i den ordning som motsvarar sökvägarna som producerade dem.

Exempel 1 – Grundläggande användning

Här är ett exempel att visa.

SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| 2      |
+--------+

I det här fallet returnerade vi värdet för nyckeln b .

Här är ett annat exempel:

SELECT 
  JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| "Bart" |
+--------+

Exempel 2 – Icke-existerande sökväg

Om du anger en sökväg som inte finns returneras ett NULL-värde.

SELECT 
  JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| NULL   |
+--------+

Du får också ett NULL-värde om något av argumenten är NULL .

Exempel 3 – Arrayer

Här är ett exempel som använder en array.

SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| 3      |
+--------+

Matriser använder nollbaserad numrering, så i det här fallet ersätts det tredje elementet.

Här är ett annat exempel på array. Den här gången returnerar vi ett värde från en kapslad array.

SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| 4      |
+--------+

Exempel 4 – Flera sökvägar

Du kan ange mer än en sökväg för att returnera data från flera platser i JSON-dokumentet.

Grundläggande exempel:

SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
| [2, 4] |
+--------+

Exempel 5 – Ett större JSON-dokument

Här är ett exempel med ett lite större JSON-dokument.

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';

Resultat:

+---------------------------------------+
| Result                                |
+---------------------------------------+
| ["Homer", 39, ["Eating", "Sleeping"]] |
+---------------------------------------+

Vi kan också välja ett specifikt element från arrayen om det behövs:

SET @data = '{  
    "Person": {    
       "Name": "Homer", 
       "Age": 39,
       "Hobbies": ["Eating", "Sleeping"]  
    }
 }';
SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';

Resultat:

+---------------------------+
| Result                    |
+---------------------------+
| ["Homer", 39, "Sleeping"] |
+---------------------------+

  1. Hur man sammanfogar tre bord av laravel vältalig modell

  2. Hur krymper jag min SQL Server-databas?

  3. Hur man löser oförmögen att byta kodningsfel när XML infogas i SQL Server

  4. Hur man söker efter exakt matchade ord med MySql Query