如何搜索包含JSON数组的SQL列

pau*_*guy 9 sql t-sql arrays sql-server-2016 json-query

我有一个SQL列,它有一个JSON数组:

{"names":["Joe","Fred","Sue"]}
Run Code Online (Sandbox Code Playgroud)

给定一个搜索字符串,我如何使用SQL在names数组中搜索匹配?我正在使用SQL 2016并查看了JSON_QUERY,但不知道如何在JSON数组上搜索匹配项.像下面这样的东西会很好.

SELECT *
FROM table
WHERE JSON_QUERY(column, '$.names') = 'Joe'
Run Code Online (Sandbox Code Playgroud)

Ser*_*lan 24

要在JSON数组中进行搜索,需要使用 OPENJSON

DECLARE @table TABLE (Col NVARCHAR(MAX))
INSERT INTO @table VALUES ('{"names":["Joe","Fred","Sue"]}')

SELECT * FROM @table 
WHERE 'Joe' IN ( SELECT value FROM OPENJSON(Col,'$.names'))  
Run Code Online (Sandbox Code Playgroud)

或作为替代方案,人们可​​以使用它CROSS APPLY.

SELECT * FROM 
    @table 
    CROSS APPLY OPENJSON(Col,'$.names')
WHERE value ='Joe'
Run Code Online (Sandbox Code Playgroud)