微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 查找元素在 JSON 数组列中

如何解决SQL 查找元素在 JSON 数组列中

您好,我有一个列表,其中包含带有标签的 json 数组,我尝试找到一种方法来选择其中包含某些值的结果:

ID 标签
1 ["test01"]
2 ["test02","test03"]

我尝试使用 JSON_QUERY AND JSON_VALUE()

SELECT *
FROM table_tags  
WHERE JSON_QUERY(tags,'$') IN ('test01','test02')

什么都不返回

但是在第一个数组元素 [0] 上带有 json_value

SELECT *
FROM table_tags  
WHERE JSON_VALUE(tags,'$[0]') IN ('test01','test02')

它用 test01 返回第一个

ID 标签
1 ["test01"]

我需要找到一种方法来遍历 json_value 标签以查找 ('test01','test02') 中的所有标签

解决方法

您需要调用 OPENJSON() 来解析存储的 JSON 数组。结果是一个包含 keyvaluetype 列的表,value 列中是解析的 JSON 数组中的每个元素。列数据类型为 nvarchar(max),具有与 tags 列排序规则相同的排序规则。

SELECT *
FROM (VALUES
   (1,'["test01"]'),(2,'["test02","test03"]')
) table_tags (id,tags)
WHERE EXISTS (
   SELECT 1 FROM OPENJSON(tags) WHERE [value] IN ('test01','test02')
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。