Zum Hauptinhalt springen
Übersetzte Seite

Diese Seite wurde mit KI-Unterstützung aus dem Englischen übersetzt. Bei Abweichungen ist die englische Version maßgeblich.

JSON_REPLACE

Aktualisiert vorhandene Werte in einem JSON-Objekt anhand ihres Pfads. JSON_REPLACE fügt dem Dokument keine neuen Schlüssel hinzu, sondern ersetzt nur die Werte vorhandener Schlüssel.

Siehe auch:
[SELECT] [JSON_EXTRACT] [JSON_SET] [JSON_REPLACE]


Syntax​

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

Argumente​

json_column
Die JSON-Spalte oder der Ausdruck, in dem Werte ersetzt werden sollen.

path
Der JSON-Pfadausdruck, der auf die Stelle im JSON-Dokument verweist, an der die Ersetzung erfolgen soll. Der Pfad muss auf einen vorhandenen Schlüssel verweisen.

new_value
Der neue Wert, der am angegebenen Pfad im JSON-Dokument eingesetzt werden soll.

Rückgabewert(e)​

Gibt ein geändertes JSON-Dokument zurück, in dem der angegebene Wert ersetzt wurde. Wenn der angegebene Pfad nicht vorhanden ist, wird das ursprüngliche JSON-Dokument unverändert zurückgegeben.

Verhalten, wenn ein Schlüssel vorhanden ist
FunktionÜberschreiben, wenn bereits vorhanden?Anlegen, wenn nicht vorhanden?
json_insert()NeinJa
json_replace()JaNein
json_set()JaJa

Beispiele​

Einen einzelnen Wert in einem JSON-Objekt ersetzen​

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"} |
|---------------------------------------|------------------------------------------|
*/

Mehrere Werte in einem JSON-Objekt ersetzen​

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'