修改指定路徑上 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 將預設刪除金鑰,因此你可以使用它來刪除金鑰。