我有一个 nvarchar 列,如果内容是有效的 JSON,我想返回嵌入到我的 JSON 结果中,否则作为字符串返回。
这是我尝试过的:
select
(
case when IsJson(Arguments) = 1 then
Json_Query(Arguments)
else
Arguments
end
) Results
from Unit
for json path
这总是将结果放入字符串中。
以下方法有效,但前提是属性包含有效的 JSON:
select
(
Json_Query(
case when IsJson(Arguments) = 1 then
Arguments
else
'"' + String_escape(IsNull(Arguments, ''), 'json') + '"' end
)
) Results
from Unit
for json path
如果 Arguments 不包含 JSON 对象,则会发生运行时错误。
更新:样本数据:
Arguments
---------
{ "a": "b" }
Some text
更新:任何版本的 SQL Server 都可以。我什至很高兴知道它即将推出测试版或其他版本。