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

求助:如何在SQL Server 2014中实现string_agg查询功能?

在SQL Server 2014中替代STRING_AGG的XML实现方案

没问题!我来帮你搞定SQL Server 2014里的字符串聚合需求——毕竟2014版本还没引入STRING_AGG,用XML拼接是当时最靠谱的替代方法,我给你拆解清楚:

完整替代查询

把你原来的STRING_AGG语句换成下面这段:

SELECT STUFF(
    (SELECT ',' + CAST(t.id AS VARCHAR(MAX))
     FROM Table t
     FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),
    1, 1, ''
) AS id;

逐部分解释

我给你拆解每个环节的作用,这样你就能明白为啥这么写:

  • FOR XML PATH(''):这一步会把查询到的每个id前面加个逗号,然后拼接成一段没有根节点的XML字符串。比如你的表id是1、2、3,这部分会生成,1,2,3(注意开头多了个逗号)。
  • TYPE:加上这个关键字,会让结果以XML类型返回,而不是默认的普通字符串。这很重要,因为它能自动处理像&、<这类XML特殊字符,避免拼接后出现乱码或者转义错误。
  • .value('.', 'VARCHAR(MAX)'):把XML类型的内容转换回普通的字符串格式,这样我们就能得到带开头逗号的聚合字符串。
  • STUFF(..., 1, 1, ''):最后用STUFF函数把开头的那个多余逗号删掉,就得到了和STRING_AGG完全一样的结果:1,2,3。

注意事项

  • 如果你的id是数值类型(比如INT),一定要用CAST或CONVERT转换成字符串类型,不然拼接的时候会报错。
  • 如果你的数据里有XML特殊字符(比如&),这个方法比早期不用TYPE的写法更可靠,因为它会正确处理转义,最终输出的字符和原数据一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:11:18