2017-10-12 121 views
2

我有一個表[JsonTable],列[JsonData]保存JSON字符串,的SQL Server 2016中選擇其中JSON數組

JsonData像:

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

我怎樣才能內加入這個表所示:

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

回答

2

您需要使用OPENJSON函數讀取Names陣列。你可以使用這個查詢。

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

另一種方法是使用跨應用操作是這樣的:

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