SQL Server 2016 JSON 转换:对象数组到值数组
SQL Server 2016 提供强大的 JSON 功能,简化了报告和集成的数据转换。 此示例解决了一个常见需求:将 SQL 对象数组转换为 JSON 结构中更简单的值数组。
场景:
考虑一个表,#temp
,包含如下数据:
#临时表:
|项目 ID | |---|---| | 1234 | 1234 | 5678 | | 7890 |
目标是将这些数据转换为 JSON,将 item_id
值呈现为单个数组,而不是对象数组。
目标 JSON 结构:
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
解决方案:
这个高效的查询实现了所需的转换:
<code class="language-sql">SELECT JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + CAST(item_id AS VARCHAR(MAX)) + '"' FROM #temp FOR XML PATH('')),1,1,'') + ']' ) AS ids FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;</code>
说明:
查询巧妙地使用 FOR XML PATH('')
创建一个用逗号分隔的带引号 item_id
值的字符串。 STUFF
删除前导逗号。 然后将生成的字符串括在方括号 ([]
) 中以形成有效的 JSON 数组,并使用 JSON_QUERY
对其进行解析。最后,FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
将输出格式化为所需的 JSON 对象。
输出:
执行查询会生成目标 JSON 结构:
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
此方法提供了一种简洁有效的方法来管理 SQL Server 2016 中的 JSON 数组转换。
以上是如何将 SQL 对象数组转换为 JSON 值数组 (SQL Server 2016)?的详细内容。更多信息请关注PHP中文网其他相关文章!