Remplace ou insère une valeur à un emplacement spécifié dans un document JSON.
Syntaxe
JSON json_set(JSON <input>, ARRAY<STRING> <path>, JSON <value>, BOOLEAN <create_if_missing>);
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
input |
JSON | Oui | Tableau ou objet JSON à modifier. |
path |
ARRAY |
Oui | Emplacement cible, exprimé sous la forme d'un tableau de chaînes où chaque élément représente un niveau d'imbrication. Pour référencer un index de tableau, utilisez sa représentation numérique sous forme de chaîne, par exemple "0" pour le premier élément. |
value |
JSON | Oui | Valeur JSON à écrire à l'emplacement cible. |
create_if_missing |
BOOLEAN | Oui | Définit le comportement lorsque l'emplacement cible n'existe pas. Valeurs valides : true (ajoute une valeur à l'emplacement spécifié) et false (valeur par défaut ; n'ajoute pas de valeur si l'emplacement n'existe pas). |
Valeur renvoyée
Renvoie la valeur JSON modifiée.
Exemples
Remplacer une valeur existante
Remplacez f1 (index 0, champ f1) par [2,3,4] :
SELECT json_set(
JSON '[{"f1":1,"f2":null},2,null,3]',
array("0", "f1"),
JSON '[2,3,4]',
false
);
Résultat :
[{"f1":[2,3,4],"f2":null},2,null,3]
Tentative de remplacement d'un chemin inexistant (create_if_missing=false)
Le chemin f3 n'existe pas dans le premier élément. Avec create_if_missing défini sur false, la fonction renvoie le JSON d'origine sans modification :
SELECT json_set(
JSON '[{"f1":1,"f2":null},2,null,3]',
array("0", "f3"),
JSON '[2,3,4]',
false
);
Résultat :
[{"f1":1,"f2":null},2,null,3]
Insertion d'une valeur à un chemin inexistant (create_if_missing=true)
Le chemin f3 n'existe pas dans le premier élément. Avec create_if_missing défini sur true, la fonction ajoute f3 en tant que nouvelle clé :
SELECT json_set(
JSON '[{"f1":1,"f2":null},2,null,3]',
array("0", "f3"),
JSON '[2,3,4]',
true
);
Résultat :
[{"f1":1,"f2":null,"f3":[2,3,4]},2,null,3]