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

SQL Server 2014 FOR XML PATH实现根节点后添加回车换行

解决SQL Server 2014 FOR XML PATH生成带换行节点的问题

刚好碰到过类似的需求,在SQL Server 2014里要实现每个节点块单独换行,核心思路是先为每条数据生成独立的 XML片段,再用换行符把这些片段拼接起来。下面给你具体的实现方案:

示例代码

假设你原本的查询是从BillingTable中生成账单数据,我们可以这样修改:

SELECT STUFF(
    -- 拼接每个<Billing>片段,中间加回车换行
    (SELECT CHAR(13) + CHAR(10) + CAST(
        -- 为单条数据生成<Billing>节点XML
        (SELECT 
            CustomerID AS 'CustomerID',
            Amount AS 'Amount',
            BillDate AS 'BillDate'
         FOR XML PATH('Billing'), TYPE -- 使用TYPE避免特殊字符转义异常
        ) AS NVARCHAR(MAX))
     FROM BillingTable
     FOR XML PATH(''), TYPE -- 拼接所有片段,保留TYPE避免额外转义
    ).value('.', 'NVARCHAR(MAX)'),
    1, 2, '' -- 移除开头多余的第一个换行符
) AS FormattedXML

关键细节解释

  • FOR XML PATH('Billing'), TYPE:为每条账单数据生成独立的<Billing>...</Billing>节点,TYPE参数确保XML的特殊字符(如&、<)能正确保留,不会被错误转义。
  • CHAR(13)+CHAR(10):这是Windows系统的标准回车换行符,如果供应商系统用的是Unix风格,单独用CHAR(10)即可。
  • STUFF函数:因为拼接后的字符串开头会多一个换行符,用STUFF把前两个字符(回车+换行)替换为空,保证输出的第一个节点顶格。

额外提示

如果你的是顶级根节点(不需要外层包裹),上面的代码直接就能输出每个单独一行的格式。要是原本有外层根节点,只需要调整内层的FOR XML PATH结构即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:06:11