Mysql
 sql >> Base de données >  >> RDS >> Mysql

JSON_EXTRACT() - Renvoie les données d'un document JSON dans MySQL

Dans MySQL, le JSON_EXTRACT() La fonction renvoie les données d'un document JSON. Les données réelles renvoyées sont déterminées par le chemin que vous fournissez comme argument.

Vous fournissez le document JSON comme premier argument, suivi du chemin des données à renvoyer. Vous pouvez également fournir plusieurs chemins pour renvoyer des données à partir de plusieurs endroits dans le document.

Syntaxe

La syntaxe ressemble à ceci :

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

json_doc est le document JSON et le path est le chemin vers la valeur à renvoyer.

S'il est possible que ces arguments renvoient plusieurs valeurs, les valeurs correspondantes sont automatiquement enveloppées sous forme de tableau, dans l'ordre correspondant aux chemins qui les ont produites.

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

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

Résultat :

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

Dans ce cas, nous avons renvoyé la valeur de la clé b .

Voici un autre exemple :

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

Résultat :

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

Exemple 2 - Chemin inexistant

Si vous spécifiez un chemin qui n'existe pas, une valeur NULL est renvoyée.

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

Résultat :

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

Vous obtiendrez également une valeur NULL si l'un des arguments est NULL .

Exemple 3 – Tableaux

Voici un exemple utilisant un tableau.

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

Résultat :

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

Les tableaux utilisent une numérotation de base zéro, donc dans ce cas, le troisième élément est remplacé.

Voici un autre exemple de tableau. Cette fois, nous renvoyons une valeur d'un tableau imbriqué.

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

Résultat :

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

Exemple 4 – Chemins multiples

Vous pouvez spécifier plusieurs chemins afin de renvoyer des données à partir de plusieurs emplacements dans le document JSON.

Exemple de base :

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

Résultat :

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

Exemple 5 - Un document JSON plus grand

Voici un exemple avec un document JSON légèrement plus grand.

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

Résultat :

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

Nous pouvons également choisir un élément spécifique du tableau si nécessaire :

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

Résultat :

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