J'ai une colonne SQL qui a un seul tableau JSON:
{"names":["Joe","Fred","Sue"]}
Étant donné une chaîne de recherche, comment puis-je utiliser SQL pour rechercher une correspondance dans le tableau des noms? J'utilise SQL 2016 et j'ai regardé JSON_QUERY, mais je ne sais pas comment rechercher une correspondance sur un tableau JSON. Quelque chose comme ci-dessous serait bien.
SELECT *
FROM table
WHERE JSON_QUERY(column, '$.names') = 'Joe'
Pour faire une recherche dans un tableau JSON, il faut utiliser 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'))
ou comme alternative, on peut l'utiliser avec CROSS APPLY
.
SELECT * FROM
@table
CROSS APPLY OPENJSON(Col,'$.names')
WHERE value ='Joe'