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

JSON_ARRAY_INSERT() - Insérer des valeurs dans un tableau JSON dans MySQL

Dans MySQL, le JSON_ARRAY_INSERT() La fonction est utilisée pour insérer une nouvelle valeur dans un tableau.

Vous fournissez le document JSON comme premier argument, suivi du chemin d'accès dans lequel insérer, suivi de la valeur à insérer.

Syntaxe

La syntaxe ressemble à ceci :

JSON_INSERT(json_doc, path, val[, path, val] ...)

Où :

  • json_doc est le document JSON.
  • path est le chemin de l'élément pour lequel insérer la nouvelle valeur.
  • val est la nouvelle valeur qui sera insérée.

Les paires chemin-valeur sont évaluées de gauche à droite. Le document produit en évaluant une paire devient la nouvelle valeur par rapport à laquelle la paire suivante est évaluée.

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer.

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

Résultat :

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

Ainsi, le 3ème argument est inséré dans le tableau au chemin spécifié. Dans ce cas, j'utilise $[1] pour le chemin, qui fait référence au deuxième élément (les tableaux JSON utilisent une numérotation à partir de zéro - la numérotation commence à 0 ).

Exemple 2 – Tableau imbriqué

Voici un exemple d'insertion d'une valeur dans un tableau imbriqué dans un autre tableau.

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

Résultat :

+-------------------+
| Result            |
+-------------------+
| [1, 2, [3, 5, 4]] |
+-------------------+

Donc ici, j'utilise $[2][1] comme chemin. Le [2] fait référence au 3ème élément du tableau externe. Le [1] fait référence au 2ème élément du tableau imbriqué.

Exemple 3 – Un document JSON plus volumineux

Cet exemple utilise un document JSON (légèrement) plus grand. Cela montre comment le chemin change en fonction de l'emplacement du tableau dans le document.

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

Résultat :

+----------------------------------------------------------------------------------+
| Result                                                                           |
+----------------------------------------------------------------------------------+
| {"Person": {"Name": "Homer", "Hobbies": ["Eating", "Base Jumping", "Sleeping"]}} |
+----------------------------------------------------------------------------------+