如何在nvarchar中正确插入换行符

Oja*_*low 4 sql t-sql sql-server sql-server-2012

我需要创建一个脚本,它需要一些富文本(html文本)并将其转换为常规文本.我想要做的是<br>用换行符替换所有标签.我尝试用替换功能做到这一点:

set @rich_text_to_modify = replace(@rich_text_to_modify,'<br>', CHAR(13)+CHAR(10))
Run Code Online (Sandbox Code Playgroud)


标记获取删除,但换行不插入.知道我做错了什么吗?

Lar*_*rnu 13

问题是您在SSMS上的设置,而不是数据没有换行符.

转到:Tools -> Options -> Query Results -> SQL Server -> Results to Grid -> Retain CR/LF on copy or Save并确保选中该选项.

  • 检查该选项后,我发现您必须启动一个新的查询窗口。好像对已经开放的没有影响。它仍然在网格中显示为空格,但如果将其复制/粘贴到 Excel,它将具有 crlf。 (3认同)

小智 5

您完全确定这行不通吗?我使用两种不同的结果表示方式在SSMS中进行了快速检查。

测试代码:

declare @rich_text_to_modify as nvarchar(200) = N'line1<BR>line2';

select @rich_text_to_modify

set @rich_text_to_modify = REPLACE ( @rich_text_to_modify , N'<BR>' , NCHAR(13)+NCHAR(10))

select @rich_text_to_modify
Run Code Online (Sandbox Code Playgroud)

使用“网格结果(Ctrl + D)”显示结果

在此处输入图片说明

使用“结果到文本(Ctrl + T)”显示结果

在此处输入图片说明

如您所见,您的方法运行良好。在Grid中,将结束符转换为空格。您用于验证的方法可能存在问题?