SQL Server 2016如何将两列查询结果格式化为指定纯文本格式
解决方案
SQL Server 2016无需编写自定义函数,使用内置的FOR XML PATH拼接逻辑即可实现需求,配合SSMS的文本输出模式就能直接拿到符合要求的纯文本结果。
操作步骤
- 先切换SSMS的输出模式:按下快捷键
Ctrl+T切换为「结果输出为文本」,避免网格模式自动忽略换行、截断长内容。 - 执行拼接查询,示例代码如下:
SELECT STUFF(( -- 构造每行的输出格式:名称+冒号+换行+文本内容+换行+分隔线+换行 SELECT CONCAT( name, ':', CHAR(13), CHAR(10), text, CHAR(13), CHAR(10), '_____', CHAR(13), CHAR(10) ) -- 此处替换为你的原始查询的表/子查询,保留原有WHERE、ORDER BY逻辑即可 FROM your_original_table FOR XML PATH(''), TYPE -- 避免XML自动转义特殊字符 ).value('.', 'NVARCHAR(MAX)'), 1, 0, '') AS final_output
补充说明
- 代码中
CHAR(13)+CHAR(10)是Windows标准换行符,SSMS文本输出和普通文本编辑器都能正确识别。 - 如果
text列可能存在NULL值,将text替换为ISNULL(text, '')即可避免整行拼接结果为空。 - 如果你后续升级到SQL Server 2017及以上版本,可以用更简洁的STRING_AGG函数实现,逻辑和上面一致,只是拼接方式更简单。
内容的提问来源于stack exchange,提问作者P. Paul
相关产品推荐
相关产品推荐

