在 JSON 文本中插入新的 JSON 对象

JSON_MODIFY 函数使你可以将 JSON 对象插入 JSON 文本:

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

由于第三个参数是文本,因此需要使用 JSON_QUERY 函数将其包装为强制转换文本为 JSON。如果没有这个强制转换,JSON_MODIFY 会在将第三个参数作为字符串值插入之前将其视为纯文本和转义字符。没有 JSON_QUERY 结果将是:

{"Id":1,"Name":"Toy Car","Price":'{\"Min\":34.99,\"Recommended\":45.49}'}

如果该对象不存在,则 JSON_MODIFY 将插入此对象;如果第三个参数的值为 NULL,则将其删除。