2017-11-11 89 views
1

我有了一个JSON阵列中的SQL列:如何搜索SQL列包含JSON阵列

{"names":["Joe","Fred","Sue"]} 

给出一个搜索字符串,我怎么能使用SQL来搜索名称阵列中的比赛?我正在使用SQL 2016并查看了JSON_QUERY,但不知道如何搜索JSON数组上的匹配。像下面的东西会很好。

SELECT * 
FROM table 
WHERE JSON_QUERY(column, '$.names') = 'Joe' 

回答

3

对于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')) 

或作为替代,你可以用CROSS APPLY使用它。

SELECT * FROM 
    @table 
    CROSS APPLY OPENJSON(Col,'$.names') 
WHERE value ='Joe' 
+0

这个工作非常好,非常感谢 – user2737646