SQL 查找元素在 JSON 数组列中

SQL find elements is in JSON array column

你好,我有一个列 table,其中包含 json 带有标签的数组,我试图找到一种方法来获得 select 结果,其中包含一些值:

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

我尝试使用 JSON_QUERYJSON_VALUE():

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

return 没什么

但在第一个数组元素 [0]

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

它return第一个有test01

ID 标签
1 ["test01"]

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

中的所有标签

您需要一个 OPENJSON() 调用来解析存储的 JSON 数组。结果是包含 keyvaluetype 列的 table,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')
)