Insère une valeur JSON à l'emplacement spécifié dans un objet JSON.
Syntaxe
JSON json_insert(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <insert_after>);
Paramètres
input : obligatoire. Contenu JSON à modifier. Types pris en charge : JSON ARRAY et JSON OBJECT.
path : obligatoire. Emplacement d'insertion du contenu JSON.
value : obligatoire. Contenu JSON à insérer.
-
insert_after : obligatoire.
-
Si le paramètre input contient un tableau et que la valeur spécifiée par path existe déjà, ce paramètre détermine la position d'insertion de la nouvelle valeur :
true : insère la nouvelle valeur après la position spécifiée.
false (valeur par défaut) : insère la nouvelle valeur avant la position spécifiée.
Si m >= n, ajoute la valeur value à la fin du tableau.
Si m < -n, ajoute la valeur value au début du tableau.
Si -n <= m < n, la valeur de insert_after détermine la position d'ajout de la valeur value.
Si le paramètre input ne contient pas de tableau, la valeur est insérée par défaut à la fin.
RemarqueSi le paramètre input contient un tableau, les règles d'insertion sont les suivantes. Soit n la longueur du tableau dans input et m la position d'insertion spécifiée :
-
Valeur de retour
Objet JSON modifié.
Exemples
-
Exemple 1 : Insérer une nouvelle valeur à un emplacement spécifique.
select json_insert(JSON'{"f1":1,"f2":{"t1":1,"t2":2}}', array("f2","t3"), JSON'3', false );Résultat :
+-----+ | _c0 | +-----+ | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} | +-----+ -
Exemple 2 : Insérer des données avant une valeur spécifiée dans un tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);Résultat :
+-----+ | _c0 | +-----+ | {"f1":[10,0,1,2]} | +-----+ -
Exemple 3 : Insérer des données après une valeur spécifiée dans un tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);Résultat :
+-----+ | _c0 | +-----+ | {"f1":[0,10,1,2]} | +-----+ -
Exemple 4 : Insérer une valeur dans un tableau. Si la position d'insertion est supérieure ou égale à la longueur du tableau JSON, la valeur est insérée à la fin du tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","4"), JSON'4', false);Résultat :
+-----+ | _c0 | +-----+ | {"f1":[0,1,2,4]} | +-----+ -
Exemple 5 : Insérer une valeur dans un tableau. Si la position d'insertion est inférieure à l'opposé de la longueur du tableau JSON, la valeur est insérée au début du tableau.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","-4"), JSON'4', false);Résultat :
+-----+ | _c0 | +-----+ | {"f1":[4,0,1,2]} | +-----+ -
Exemple 6 : Insérer une valeur dans un tableau. Si la position d'insertion se situe entre l'opposé de la longueur du tableau (exclu) et la longueur elle-même, la valeur est insérée à la position spécifiée.
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);Résultat :
+-----+ | _c0 | +-----+ | {"f1":[0,10,1,2]} | +-----+