2017-10-12 44 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