在SQL Server查询中使用OPENJSON



我正试图从存储在SQL Server数据库中的JSON数组中提取一些信息。我可以看出我需要使用OPENJSON,我已经找到了许多如何使用它的例子,但问题是所有的例子都演示了将单个JSON数组声明为变量并使用OPENZSON打开它(例如,如何在SQL Server 2016中使用OPENKSON读取JSON中带空格的字段名(。我想知道如何将其实际构建到数据库查询中。

数据库表结构示例:

表:HELP_INFO

>>
UID ID JSON
1 45745 JSON varchar-下面的示例
2 45745JSON varchar-下面的示例
3 82567JSON varchar-下面的示例

您需要一个具有适当pathOPENJSON()调用来访问嵌套的$.source_info.help_info.detailsJSON数组,并需要STRING_AGG()来聚合名称:

样本数据:

SELECT *
INTO Data
FROM (VALUES
(1, 45745, '{"source":"XYZ",
"source_info":{
"type":"need_help",
"help_info":{     
"questions":50, 
"details":[{"floatv":0.42,"name":"Tom"},{"floatv":1.08,"name":"Dick"},{"floatv":1.2,"name":"Harry"}]}}}')
) v (UID, ID, JSON)

声明:

SELECT 
ID, 
NAMES = (
SELECT STRING_AGG(JSON_VALUE([value], '$.name'), ' ') 
WITHIN GROUP (ORDER BY CONVERT(int, [key]))
FROM OPENJSON(JSON, '$.source_info.help_info.details')
)
FROM Data

最新更新