web-dev-qa-db-fra.com

Comment rechercher une colonne SQL contenant un tableau JSON

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'
11
paultechguy

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