在 SQL Server 中,有没有办法对IN
json 数组进行查询?
例如。
有一列foo
包含一个 json 数组
第 1 行 ->{"foo":["a", "b"]}
第 2 行 ->{"foo":["c", "a", "b"]}
我需要查询b
json 数组中的行
JSON_QUERY
可以返回数组,但是没办法
就像是
SELECT *
FROM table1
WHERE "b" in JSON_QUERY(foo)
LIKE
查询将起作用,但效率低下
在 SQL Server 中,有没有办法对IN
json 数组进行查询?
例如。
有一列foo
包含一个 json 数组
第 1 行 ->{"foo":["a", "b"]}
第 2 行 ->{"foo":["c", "a", "b"]}
我需要查询b
json 数组中的行
JSON_QUERY
可以返回数组,但是没办法
就像是
SELECT *
FROM table1
WHERE "b" in JSON_QUERY(foo)
LIKE
查询将起作用,但效率低下
您可以结合OPENJSON
使用JSON_QUERY
和使用CROSS APPLY
将结果分解到数组元素级别
declare @tmp table (foo nvarchar(max))
insert into @tmp values
('{"foo":["a", "b"]}')
,('{"foo":["c", "a", "b"]}')
,('{"foo":["c", "a", "y"]}')
SELECT foo
FROM @tmp AS c
CROSS APPLY OPENJSON(JSON_QUERY(foo, '$.foo')) AS x
where x.[value]='b'
样本输入:
样本输出: