我正在阅读microsoft docs ms sql JSON options,我想检查我的列Settings
是否是nvarchar,我在那里放了一些JSON,如果JSON包含属性name
。
这可行吗?
比如:
DECLARE @info NVARCHAR(100)='{"name":"John","skills":["C#","SQL"]}'
IF (ISJSON(@info) > 0)
BEGIN
-- if (@info contains `$.name`)
--begin
-- SET @info=JSON_MODIFY(@info,'$.name','Mike')
--end
-- else
--begin
-- SET @info=JSON_MODIFY(@info,'$.name','Mike')
--end
END
我需要检查JSON属性是否存在,如果存在,则更新值,如果不存在,则插入具有预定义值的属性。
1条答案
按热度按时间mgdq6dx11#
如何插入或更新
key: value
对:如果你想……”检查JSON属性是否存在,如果存在,则更新值,如果不存在,则插入具有预定义值的属性..."*,
JSON_MODIFY
文档中的备注部分为您提供了一个可能的解决方案:JSON_MODIFY函数允许您更新现有属性的值,插入新的键:值对,或基于模式和提供的值的组合删除键。
如果在
lax
模式下执行JSON_MODIFY
,而不是NULL
,则函数将尝试:path
不存在,则插入新的key:value
对。path
存在,则更新现有的key: value
对。表:
声明:
输出:
如何查看具体的
key
或value
:如果要检查特定的
key
是否存在,请使用OPENJSON()
:如果要检查特定的
value
是否存在,请使用JSON_VALUE()
:问题陈述的示例:
SQL Server 2022新增JSON功能:
从SQL Server 2022开始,您可以使用
JSON_PATH_EXISTS()
函数来检查指定的JSON路径是否存在: