2017-10-12 22 views
2

J'ai une table [JsonTable], et la colonne [JsonData] enregistrer la chaîne JSON,SQL Server 2016 sélectionnez l'emplacement où dans le tableau JSON

JsonData comme:

{ 
    "Names": ["John", "Joe", "Sam"] 
} 

Comment puis-je intérieure rejoindre ce table comme:

SELECT* FROM [TestTable] AS T 
INNER JOIN [JsonTable] AS J ON T.[Name] IN JSON_QUERY(J.[JsonData], '$.Names') 

Répondre

2

Vous devez utiliser la fonction OPENJSON pour la lecture de tableau Names. Vous pouvez utiliser cette requête.

SELECT * FROM [TestTable] T 
INNER JOIN [JsonTable] AS J ON T.[Name] IN (SELECT value FROM OPENJSON(J.[JsonData],'$.Names')) 
0

Une autre façon est d'utiliser la croix appliquer l'opérateur comme ceci:

SELECT * 
FROM [JsonTable] AS J 
CROSS APPLY OPENJSON(J.[JsonData], '$.Names') jsonValue 
INNER JOIN [TestTable] T ON T.[Name] = jsonvalue.value