sql >> Database teknologi >  >> RDS >> Mysql

JSON_EXTRACT() – Returner data fra et JSON-dokument i MySQL

I MySQL er JSON_EXTRACT() funktion returnerer data fra et JSON-dokument. De faktiske returnerede data bestemmes af den sti, du angiver som argument.

Du angiver JSON-dokumentet som det første argument, efterfulgt af stien til de data, der skal returneres. Du kan også angive flere stier til at returnere data fra flere steder i dokumentet.

Syntaks

Syntaksen ser sådan ud:

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

Hvor json_doc er JSON-dokumentet og path er stien til den værdi, der skal returneres.

Hvis det er muligt, at disse argumenter kan returnere flere værdier, pakkes de matchede værdier automatisk som et array i den rækkefølge, der svarer til stierne, der producerede dem.

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere.

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

Resultat:

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

I dette tilfælde returnerede vi værdien af ​​nøglen b .

Her er et andet eksempel:

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

Resultat:

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

Eksempel 2 – Ikke-eksisterende sti

Hvis du angiver en sti, der ikke eksisterer, returneres en NULL-værdi.

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

Resultat:

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

Du får også en NULL-værdi, hvis nogle af argumenterne er NULL .

Eksempel 3 – Arrays

Her er et eksempel, hvor du bruger et array.

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

Resultat:

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

Arrays bruger nul-baseret nummerering, så i dette tilfælde erstattes det tredje element.

Her er et andet array-eksempel. Denne gang returnerer vi en værdi fra et indlejret array.

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

Resultat:

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

Eksempel 4 – Flere stier

Du kan angive mere end én sti for at returnere data fra flere steder i JSON-dokumentet.

Grundlæggende eksempel:

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

Resultat:

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

Eksempel 5 – Et større JSON-dokument

Her er et eksempel med et lidt 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 også vælge et specifikt element fra arrayet, hvis det er nødvendigt:

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. SQL Server Failover Cluster Installation -2

  2. Fordele og ulemper ved at bruge SqlCommand Prepare i C#?

  3. Konverter DateTime til MySQL ved hjælp af C#

  4. Funktioner med variabelt antal inputparametre