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

JSON_EXTRACT() – Restituisce dati da un documento JSON in MySQL

In MySQL, il JSON_EXTRACT() la funzione restituisce i dati da un documento JSON. I dati effettivi restituiti sono determinati dal percorso fornito come argomento.

Fornisci il documento JSON come primo argomento, seguito dal percorso dei dati da restituire. Puoi anche fornire più percorsi per restituire i dati da più punti del documento.

Sintassi

La sintassi è questa:

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

Dove json_doc è il documento JSON e il path è il percorso del valore da restituire.

Se è possibile che quegli argomenti possano restituire più valori, i valori corrispondenti vengono inseriti automaticamente come una matrice, nell'ordine corrispondente ai percorsi che li hanno prodotti.

Esempio 1 – Utilizzo di base

Ecco un esempio da dimostrare.

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

Risultato:

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

In questo caso, abbiamo restituito il valore della chiave b .

Ecco un altro esempio:

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

Risultato:

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

Esempio 2 – Percorso inesistente

Se specifichi un percorso che non esiste, viene restituito un valore NULL.

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

Risultato:

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

Otterrai anche un valore NULL se uno qualsiasi degli argomenti è NULL .

Esempio 3 – Matrici

Ecco un esempio che utilizza un array.

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

Risultato:

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

Le matrici utilizzano la numerazione in base zero, quindi in questo caso il terzo elemento viene sostituito.

Ecco un altro esempio di array. Questa volta restituiamo un valore da un array nidificato.

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

Risultato:

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

Esempio 4 – Percorsi multipli

Puoi specificare più di un percorso per restituire i dati da più posizioni all'interno del documento JSON.

Esempio di base:

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

Risultato:

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

Esempio 5:un documento JSON più grande

Ecco un esempio con un documento JSON leggermente più grande.

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

Risultato:

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

Possiamo anche scegliere un elemento specifico dall'array, se necessario:

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

Risultato:

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