You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FOR JSON PATH生成值数组而非对象?SQL Server技术求助

SQL Server单列id转纯值数组JSON的解决方法

你当前的FOR JSON PATH, ROOT('ids')会把每条id包装成{"id": "x"}的对象,不符合纯值数组的需求。以下两种方法可以生成你想要的JSON格式:

方法一:规范的JSON构造方式

使用STRING_AGG聚合id,配合JSON_QUERY确保JSON结构合法:

SELECT JSON_QUERY('["' + STRING_AGG(QUOTENAME(id, '"'), ',') + '"]') AS ids
FROM [table]
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

关键细节

  • QUOTENAME(id, '"'):给每个id添加双引号,避免JSON语法错误
  • STRING_AGG将所有id拼接为"1","2","3"的字符串,加上方括号后就是标准JSON数组
  • JSON_QUERY标记该字符串为合法JSON,防止SQL Server自动转义引号
  • WITHOUT_ARRAY_WRAPPER取消默认的外层数组,直接输出单个JSON对象

方法二:手动拼接简化实现

如果你的id都是纯数字且无特殊字符,也可以直接手动拼接JSON结构:

SELECT '{"ids": ["' + STRING_AGG(id, '","') + '"]}' AS json_result
FROM [table]

两种方法执行后都会得到目标输出:

{
    "ids": [ "1", "2", "3" ]
}

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:03:31