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

SQL Server 2019中如何用FOR JSON生成无键JSON数组?

解决方案:生成无键JSON数组(值数组)

在SQL Server 2019中,FOR JSON AUTO/PATH默认会生成带键的对象数组,若要直接生成仅包含值的JSON数组,最简洁且避免字符串替换的方法是使用STRING_AGG函数拼接值,再包裹成JSON数组格式。

1. 数值类型场景(如示例中的年份)

直接拼接数值并包裹数组符号即可:

declare @years table (year int)
insert into @years values (2022),(2021),(2020)

SELECT '[' + STRING_AGG(CAST(year AS VARCHAR(10)), ',') + ']' AS json_array

执行后输出:[2022,2021,2020]

2. 字符串类型场景

若处理字符串,需为每个值添加双引号,并转义字符串内部的双引号(避免JSON格式错误):

declare @names table (name varchar(50))
insert into @names values ('Alice'),('Bob O''Neil'),('Charlie "Chuck"')

SELECT '[' + STRING_AGG('"' + REPLACE(name, '"', '""') + '"', ',') + ']' AS json_array

执行后输出:["Alice","Bob O'Neil","Charlie ""Chuck"""](符合JSON规范)

补充:结合JSON_QUERY确保JSON类型输出

如果需要确保结果被识别为JSON类型而非字符串,可以用JSON_QUERY包装拼接结果:

declare @years table (year int)
insert into @years values (2022),(2021),(2020)

SELECT JSON_QUERY('[' + STRING_AGG(year, ',') + ']') AS json_array
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

此方法返回的是JSON对象而非字符串,适合后续需要直接处理JSON的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:35:20