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

如何用T-SQL的FOR JSON PATH返回无列名的纯值数组?

在SQL中返回不含列名的纯值数组的方法

你可以通过以下几种方式在T-SQL中生成纯值组成的JSON数组,替代默认返回的带键对象数组:

方法1:利用STRING_AGG直接拼接数组(适用于SQL Server 2017+)

对于数值类型的列,直接用STRING_AGG拼接值,再手动包裹数组符号即可:

CREATE TABLE #data (
    id int
);

INSERT INTO #data VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

-- 生成纯数值数组
SELECT CONCAT('[', STRING_AGG(id, ','), ']') AS pure_value_array
FROM #data;

DROP TABLE #data

执行后会返回:

[1,2,3,4,5,6,7,8,9,10]

如果是字符串类型的列,需要处理引号和JSON转义,避免格式错误:

-- 示例:字符串列的处理
CREATE TABLE #string_data (
    content nvarchar(50)
);

INSERT INTO #string_data VALUES ('foo'), ('bar"baz'), ('test\nline');

SELECT '[' + STRING_AGG(JSON_QUERY('"' + STRING_ESCAPE(content, 'json') + '"'), ',') + ']' AS pure_string_array
FROM #string_data;

DROP TABLE #string_data

方法2:结合FOR JSON PATH的特性生成

通过将列名指定为空字符串,配合WITHOUT_ARRAY_WRAPPER去掉默认的对象外层,再用STRING_AGG拼接成数组:

CREATE TABLE #data (
    id int
);

INSERT INTO #data VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);

SELECT '[' + STRING_AGG((SELECT id AS '' FOR JSON PATH, WITHOUT_ARRAY_WRAPPER), ',') + ']' AS pure_value_array
FROM #data;

DROP TABLE #data

这种方式的优势是自动适配不同数据类型的JSON格式转换,无需手动处理转义。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:36:40