首页 > 数据库 > mysql教程 > 如何在 SQL Server 2016 中从 JSON 对象数组中提取值数组?

如何在 SQL Server 2016 中从 JSON 对象数组中提取值数组?

Patricia Arquette
发布: 2025-01-09 18:41:42
原创
871 人浏览过

How to Extract an Array of Values from an Array of JSON Objects in SQL Server 2016?

SQL Server 2016:将 JSON 对象数组转换为值数组

SQL Server 2016 的 JSON 功能很强大,但提取特定的数据结构有时需要创造性的方法。 此示例演示将 JSON 对象数组转换为更简单的值数组。

挑战:

考虑一个生成 JSON 对象数组的查询:

<code class="language-sql">SELECT (SELECT item_id 
FROM #temp
FOR JSON PATH, root('ids')) </code>
登录后复制

这会产生如下 JSON:

<code class="language-json">{
  "ids": [
    {"item_id": "1234"},
    {"item_id": "5678"},
    {"item_id": "7890"}
  ]
}</code>
登录后复制

目标是将其重组为仅包含 item_id 值的 JSON 数组:

<code class="language-json">{
  "ids": [
    "1234",
    "5678",
    "7890"
  ]
}</code>
登录后复制

解决方案:

关键是利用 XML 作为中介的两步过程:

<code class="language-sql">SELECT  
JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + item_id + '"' 
FROM #temp FOR XML PATH('')),1,1,'') + ']' ) 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 对象数组展平为所需的值数组。

以上是如何在 SQL Server 2016 中从 JSON 对象数组中提取值数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板