単一の JSON 配列を持つ SQL 列があります。
{"names":["Joe","Fred","Sue"]}
検索文字列が与えられた場合、SQL を使用して名前配列内の一致を検索するにはどうすればよいですか? SQL 2016 を使用しており、JSON_QUERY を確認しましたが、JSON 配列で一致を検索する方法がわかりません。以下のようなものがよいでしょう。
SELECT *
FROM table
WHERE JSON_QUERY(column, '$.names') = 'Joe'
ベストアンサー1
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'