修改指定路径上 JSON 文本中的值

JSON_MODIFY 函数使用 JSON 文本作为输入参数,并使用第三个参数修改指定路径上的值:

declare @json nvarchar(4000) = N'{"Id":1,"Name":"Toy Car","Price":34.99}'
set @json = JSON_MODIFY(@json, '$.Price', 39.99)
print @json -- Output: {"Id":1,"Name":"Toy Car","Price":39.99}

因此,我们将使用 Price:39.99 的新 JSON 文本,其他值将不会更改。如果指定路径上的对象不存在,JSON_MODIFY 将插入 key:value 对。

要删除 key:value 对,请将 NULL 作为新值:

declare @json nvarchar(4000) = N'{"Id":1,"Name":"Toy Car","Price":34.99}'
set @json = JSON_MODIFY(@json, '$.Price', NULL)
print @json -- Output: {"Id":1,"Name":"Toy Car"}

如果没有值,JSON_MODIFY 将默认删除密钥,因此你可以使用它来删除密钥。