首页 > 解决方案 > 查询一维 JSON 字符串

问题描述

我正在尝试检查一维数组字符串是否像:

[1,2,3,4,5]

包含某个值,例如 4。

我知道使用多维数组我可以执行以下操作:

JSON_VALUE(columnName, '$.key')

但对于我的生活,我不知道如何搜索无密钥的 json 字符串。

我试过了:

WHERE JSON_VALUE(columnName, '$') = 1
WHERE JSON_VALUE(columnName, '$.') = 1
WHERE 1 IN JSON_VALUE(columnName, '$')
WHERE 1 IN JSON_VALUE(columnName, '$.')

没有任何效果。

标签: sqljsonsql-serversql-server-2016json-value

解决方案


假设字符串'[1,2,3,4,5]'在表的列中,您可以使用EXISTSwith OPENJSON

SELECT V.YourColumn
FROM (VALUES('[1,2,3,4,5]'),('[7,8,9]'))V(YourColumn)
WHERE EXISTS (SELECT 1
              FROM OPENJSON(V.YourColumn) 
                   WITH (Value int '$') OJ
              WHERE Value = 4);

推荐阅读