据我了解,如果您选择json_value
或json_query
指定 json 文档中不存在的键或对象,那么在严格模式下,您将收到错误消息。例如,这允许您确认是否在文档中指定了密钥。
如果文档中包含示例键值对,则:
"Test":null
...这将在严格模式下返回“NULL”。换句话说,您现在知道在文档中定义了键并且其值为空。
现在想象您的文档包含:
"Test":"Some string"
你查询:
select json_modify(@json, '$.Test', null);
这将返回一个缺少“Test”键的 json 字符串。
您如何正确地将键值设置为 null,而不是从 json 文档中删除它?
(上面的例子可能看起来很荒谬,但我可以想象在将 json 文档传递给下一个查询或系统之前将值设置为 null,并要求文档中存在您的“Test”键。)
根据 MS Docs 关于JSON_MODIFY:
使用文档提供的示例,只需在 json 路径前添加关键字 strict:
返回
db<>在这里摆弄