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

如何将T-SQL查询生成的XML结果拆分为多行?

解决SQL Server XML查询结果无换行的问题

嘿,这个问题我之前帮不少开发者处理过!当你用FOR XML PATH('row')查询时,SQL Server默认会输出紧凑格式的XML——所有元素都挤在一行里,可读性极差。下面给你几个实用的解决方案,适配不同的场景:

方法1:用INDENT参数(SQL Server 2016+)

这是最简单的方案,SQL Server 2016及之后的版本支持直接在FOR XML语句里加INDENT参数,自动给XML添加换行和缩进:

SELECT TOP 1000 id, forename, surname 
FROM [datagen] 
FOR XML PATH ('row'), INDENT;

这个参数会让生成的XML自动按层级换行,结构一目了然,完全不用手动拼接。

方法2:手动添加换行符(兼容旧版本)

如果你的SQL Server版本低于2016,可以通过手动插入换行符(CHAR(13)+CHAR(10)对应Windows换行,CHAR(10)对应Linux换行)来格式化XML:

SELECT 
  '<row>' + CHAR(13)+CHAR(10) +
  '  <id>' + CAST(id AS VARCHAR(20)) + '</id>' + CHAR(13)+CHAR(10) +
  '  <forename>' + forename + '</forename>' + CHAR(13)+CHAR(10) +
  '  <surname>' + surname + '</surname>' + CHAR(13)+CHAR(10) +
  '</row>' + CHAR(13)+CHAR(10)
FROM [datagen]
FOR XML PATH(''), TYPE;
  • FOR XML PATH('')用来拼接所有行的XML字符串
  • TYPE参数确保输出是原生XML类型,避免特殊字符被转义
  • 手动添加的CHAR(13)+CHAR(10)会在指定位置插入换行, 用来做缩进

方法3:在SSMS里直接格式化显示

如果你只是在SQL Server Management Studio(SSMS)里查看结果,不用修改查询也能实现换行:

  • 右键查询窗口,选择「查询选项」
  • 依次进入「结果」→「XML」
  • 勾选「将结果显示为格式化的XML」
    这样即使你用原来的查询,SSMS也会自动帮你把XML格式化成带换行和缩进的样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:57:27