Aller au contenu principal
Page traduite

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_REPLACE

Met à jour des valeurs existantes dans un objet JSON d'après leur chemin. JSON_REPLACE n'ajoute pas de nouvelles clés au document ; elle remplace uniquement les valeurs des clés existantes.

Voir aussi :
[SELECT] [JSON_EXTRACT] [JSON_SET] [JSON_REPLACE]


Syntaxe​

SELECT JSON_REPLACE(json_column, path, new_value) FROM <multipartIdentifier>;

Arguments​

json_column
La colonne ou l'expression JSON dans laquelle remplacer des valeurs.

path
L'expression de chemin JSON désignant l'emplacement du document JSON où le remplacement doit avoir lieu. Le chemin doit désigner une clé existante.

new_value
La nouvelle valeur de remplacement au chemin indiqué dans le document JSON.

Valeur(s) renvoyée(s)​

Renvoie un document JSON modifié dans lequel la valeur indiquée est remplacée. Si le chemin indiqué n'existe pas, le document JSON d'origine est renvoyé inchangé.

Comportement si une clé existe
FonctionÉcraser si la clé existe déjà ?Créer si la clé n'existe pas ?
json_insert()NonOui
json_replace()OuiNon
json_set()OuiOui

Exemples​

Remplacer une seule valeur dans un objet JSON​

SELECT sku as original,
JSON_REPLACE(sku, '$.name', 'Standard_EU') as updated
FROM azure.container_registry.registries
WHERE registry_name = 'exampleRegistryProd'
AND subscription_id = '12345678-abcd-1234-abcd-1234abcd5678'
AND resource_group_name = 'exampleResourceGroupProd';
/* expected output...
|---------------------------------------|------------------------------------------|
| original | updated |
|---------------------------------------|------------------------------------------|
| {"name":"Standard","tier":"Standard"} | {"name":"Standard_EU","tier":"Standard"} |
|---------------------------------------|------------------------------------------|
*/

Remplacer plusieurs valeurs dans un objet JSON​

select
properties beforechange,
json_replace(json_remove(properties,
'$.allowPort25Out',
'$.auxiliarySku',
'$.provisioningState',
'$.resourceGuid',
'$.macAddress',
'$.vnetEncryptionSupported',
'$.enableIPForwarding',
'$.defaultOutboundAccess',
'$.primary',
'$.virtualMachine',
'$.hostedWorkloads',
'$.tapConfigurations',
'$.nicType',
'$.auxiliaryMode',
'$.ipConfigurations[0].id',
'$.ipConfigurations[0].etag',
'$.ipConfigurations[0].type',
'$.ipConfigurations[0].properties.provisioningState',
'$.ipConfigurations[0].properties.privateIPAddress',
'$.ipConfigurations[0].properties.privateIPAllocationMethod',
'$.ipConfigurations[0].properties.primary',
'$.ipConfigurations[0].properties.privateIPAddressVersion'
),
'$.ipConfigurations[0].name',
'vmss-flex-vnet-nic01-defaultIpConfiguration'
) afterchange
from
azure.network.network_interfaces
where subscription_id = '0123456789'
and resource_group_name = 'vm-rg'
and network_interface_name = 'vm1450_z1'