web-dev-qa-db-ja.com

JSON配列を含むSQL列を検索する方法

単一のJSON配列を持つSQL列があります。

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

検索文字列が与えられた場合、SQLを使用して名前の配列内の一致を検索するにはどうすればよいですか?私はSQL 2016を使用していて、JSON_QUERYを見てきましたが、JSON配列の一致を検索する方法がわかりません。以下のようなものがいいでしょう。

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

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'
21
Serkan Arslan