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

如何将SQL查询返回的单列结果转换为纯值JSON数组

解决方案

方案1:兼容 SQL Server 2016 及以上版本(推荐,无需额外函数)

调整查询写法,将PageID列的别名设为空字符串即可,修改后完整SQL如下:

SELECT (
    SELECT CP.PageID AS ''
    FROM CommClient.dbo.ClientPage AS CP
    INNER JOIN CommApp.dbo.Page as P ON CP.PageID = P.PageID 
    INNER JOIN CommApp.dbo.PageGroup as PG ON P.PageGroupID = PG.PageGroupID
    LEFT JOIN (
       SELECT DISTINCT ParentPageID FROM [CommApp].[dbo].[Page]
    ) AS PP 
    ON P.PageID = PP.ParentPageID
    WHERE ClientID = 102 AND P.ApplicationID = 4
    ORDER BY P.pageID
    FOR JSON PATH
) AS PageIdArray

原理是当查询列的别名为空字符串时,FOR JSON PATH不会生成对应的JSON键名,最终输出就是你需要的纯数值数组格式。

方案2:SQL Server 2017 及以上版本(写法更直观)

使用STRING_AGG函数拼接所有值后套上数组括号:

SELECT JSON_QUERY(CONCAT('[', STRING_AGG(CP.PageID, ','), ']')) AS PageIdArray
FROM CommClient.dbo.ClientPage AS CP
INNER JOIN CommApp.dbo.Page as P ON CP.PageID = P.PageID 
INNER JOIN CommApp.dbo.PageGroup as PG ON P.PageGroupID = PG.PageGroupID
LEFT JOIN (
   SELECT DISTINCT ParentPageID FROM [CommApp].[dbo].[Page]
) AS PP 
ON P.PageID = PP.ParentPageID
WHERE ClientID = 102 AND P.ApplicationID = 4

这里加JSON_QUERY是为了保证返回结果被识别为JSON格式而非普通字符串,避免后续处理时多转义一层引号。

额外说明

如果你后续需要查询字符串类型的列生成纯值数组,需要额外给每个值套上单引号并转义内部的引号,数值类型不需要做额外处理,以上写法可以直接复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:03