Cette page a été traduite de l'anglais avec l'aide de l'IA. En cas de divergence, la version anglaise fait référence.
JSON_SET
Met à jour des valeurs existantes ou insère de nouvelles valeurs dans un document JSON aux chemins indiqués.
Voir aussi :
[SELECT] [JSON_EXTRACT] [JSON_SET] [JSON_REPLACE]
Syntaxe
SELECT JSON_SET(json_column, path, value_to_set) FROM <multipartIdentifier>;
Arguments
json_column
La colonne ou l'expression JSON à modifier.
path
L'expression de chemin JSON indiquant où définir la valeur. Si le chemin existe, la valeur est mise à jour ; si le chemin n'existe pas, une nouvelle paire clé-valeur est ajoutée.
value_to_set
La valeur à définir au chemin indiqué dans le document JSON.
Valeur(s) renvoyée(s)
Renvoie un document JSON avec la valeur définie au chemin indiqué. Si le chemin existe, la valeur existante est mise à jour ; sinon, une nouvelle paire clé-valeur est ajoutée.
| Fonction | Écraser si la clé existe déjà ? | Créer si la clé n'existe pas ? |
|---|---|---|
json_insert() | Non | Oui |
json_replace() | Oui | Non |
json_set() | Oui | Oui |
Exemples
Mettre à jour une valeur existante dans un objet JSON
-- Example: Update the 'status' key's value to 'active' in a JSON object
SELECT JSON_SET(json_data, '$.status', 'active') as updated_json
FROM cloud_services
WHERE service_id = 'service123';
-- Expected output:
-- |---------------------------------------------------------|
-- | updated_json |
-- |---------------------------------------------------------|
-- | {"name":"ServiceOne", "status":"active", "region":"US"} |
-- |---------------------------------------------------------|
Cette requête met à jour la clé 'status' avec la valeur 'active' dans le document JSON si la clé 'status' existe. Si 'status' n'existe pas dans le document, elle est ajoutée avec la valeur 'active'.
Ajouter une nouvelle paire clé-valeur à un objet JSON
-- Example: Add a new key 'lastChecked' with the current date to a JSON object
SELECT JSON_SET(json_data, '$.lastChecked', '2024-04-29') as updated_json
FROM cloud_services
WHERE service_id = 'service123';
/* expected output...
|-----------------------------------------------------------------------|
| updated_json |
|-----------------------------------------------------------------------|
| {"name":"ServiceOne", "status":"pending", "lastChecked":"2024-04-29"} |
|-----------------------------------------------------------------------|
*/
Cette requête ajoute une nouvelle clé 'lastChecked' avec la valeur '2024-04-29' au document JSON si 'lastChecked' n'existe pas déjà. Si elle existe, la valeur existante est mise à jour avec '2024-04-29'.