Insère une valeur JSON à une position donnée dans un document JSON.
Format de la commande
JSON json_insert(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <insert_after>);
Paramètres
input : Obligatoire. Contenu JSON à modifier. Ce paramètre accepte les types de données JSON ARRAY et JSON OBJECT.
path : Obligatoire. Chemin indiquant la position d'insertion du contenu JSON.
value : Obligatoire. Contenu JSON à insérer.
-
insert_after : Obligatoire.
-
Si le paramètre d'entrée contient un tableau et que le chemin pointe vers un élément existant, ce paramètre définit la position d'insertion :
true : Insère la nouvelle valeur après l'élément spécifié.
false (par défaut) : Insère la nouvelle valeur avant l'élément spécifié.
Si m >= n, la valeur est ajoutée à la fin du tableau.
Si m < -n, la valeur est ajoutée au début du tableau.
Si -n <= m < n, la position de la nouvelle valeur dépend du paramètre insert_after.
Si le paramètre d'entrée n'est pas un tableau, la valeur est insérée à la fin par défaut.
RemarqueSi le paramètre
inputest un tableau, les règles suivantes s'appliquent lors de l'insertion de contenu JSON. Dans ces règles,nreprésente la longueur du tableau etmla position d'insertion spécifiée : -
Valeur renvoyée
Le code JSON modifié.
Exemples
-
Exemple 1 : Insérez une nouvelle valeur à une position donnée.
select json_insert(JSON'{"f1":1,"f2":{"t1":1,"t2":2}}', array("f2","t3"), JSON'3', false );Le résultat suivant est renvoyé.
+-----+ | _c0 | +-----+ | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} | +-----+ -
Exemple 2 : Insérez une valeur avant un élément d'un tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);Le résultat suivant est renvoyé.
+-----+ | _c0 | +-----+ | {"f1":[10,0,1,2]} | +-----+ -
Exemple 3 : Insérez une valeur après un élément d'un tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);Le résultat suivant est renvoyé.
+-----+ | _c0 | +-----+ | {"f1":[0,10,1,2]} | +-----+ -
Exemple 4 : Insérez une valeur à un index situé au-delà de la fin d'un tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","4"), JSON'4', false);Le résultat suivant est renvoyé.
+-----+ | _c0 | +-----+ | {"f1":[0,1,2,4]} | +-----+ -
Exemple 5 : L'insertion d'une valeur dans un tableau JSON à un index inférieur à l'opposé de la longueur du tableau place la valeur au début du tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","-4"), JSON'4', false);Le résultat suivant est renvoyé.
+-----+ | _c0 | +-----+ | {"f1":[4,0,1,2]} | +-----+ -
Exemple 6 : Insérez une valeur dans un tableau à une position donnée si celle-ci est supérieure ou égale à l'opposé de la longueur du tableau et inférieure à cette longueur.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);Le résultat suivant est renvoyé.
+-----+ | _c0 | +-----+ | {"f1":[0,10,1,2]} | +-----+