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

SQL Server转换为XML再转回时丢失回车符问题咨询

SQL Server中XML转换丢失\r\n的问题及控制选项

当将包含完整换行符\r\n(即char(13)+char(10))的nvarchar字符串转换为XML类型,再转换回nvarchar时,原字符串中的\r会被丢弃,仅保留\n。

这是因为XML 1.0规范明确要求:所有换行符必须标准化,\r\n或单独的\r都会被统一转换为单个\n。SQL Server的XML类型严格遵循这一标准,不存在服务器或连接层面的配置选项可以改变这一默认行为。

如果需要保留原有的\r\n换行符,可在转换回字符串后手动将\n替换回\r\n,示例代码如下:

declare 
  @ln nvarchar(2) = char(13)+char(10)

declare 
  @str nvarchar(max) = '<x>qwe '+@ln+' asd</x>'
print @str
print charindex(@ln, @str) -- 输出: 8

-- 转换为xml
declare @xml xml = convert(xml, @str)
-- 转换回字符串后恢复\r\n
set @str = replace(convert(nvarchar(max), @xml), char(10), @ln)

print @str
print charindex(@ln, @str) -- 输出: 8
print charindex(char(13), @str) -- 输出: 8
print charindex(char(10), @str) -- 输出: 9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:25:25