在 SQL Server 中,有没有办法对INjson 数组进行查询?
例如。
有一列foo包含一个 json 数组
第 1 行 ->{"foo":["a", "b"]}
第 2 行 ->{"foo":["c", "a", "b"]}
我需要查询bjson 数组中的行
JSON_QUERY可以返回数组,但是没办法
就像是
SELECT *
FROM table1
WHERE "b" in JSON_QUERY(foo)
LIKE查询将起作用,但效率低下
在 SQL Server 中,有没有办法对INjson 数组进行查询?
例如。
有一列foo包含一个 json 数组
第 1 行 ->{"foo":["a", "b"]}
第 2 行 ->{"foo":["c", "a", "b"]}
我需要查询bjson 数组中的行
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'
样本输入:
样本输出: