Как правильно вставить новую строку в nvarchar - PullRequest
0 голосов
/ 02 ноября 2018

Мне нужно сделать скрипт, который будет принимать какой-то форматированный текст (HTML-текст) и преобразовывать его в обычный текст. Я хочу заменить все теги <br> на новую строку. Я пытался сделать это с помощью функции замены:

set @rich_text_to_modify = replace(@rich_text_to_modify,'<br>', CHAR(13)+CHAR(10))

Теги
удаляются, но новые строки не вставляются. Есть идеи, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы абсолютно уверены, что это не работает? Я сделал быструю проверку в 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

Представление результатов с использованием 'Results to Grid (Ctrl + D)'

enter image description here

Представление результатов с использованием 'Results to Text (Ctrl + T)'

enter image description here

Как видите, ваш метод работает нормально. В сетке символы конца строки переводятся в пробелы. Может быть, есть проблема с методом, который вы используете для проверки?

0 голосов
/ 02 ноября 2018

Проблема в том, что вы настроили SSMS, а не в том, что в данных нет перевода строки.

Перейдите на: Tools -> Options -> Query Results -> SQL Server -> Results to Grid -> Retain CR/LF on copy or Save и убедитесь, что опция отмечена галочкой.

...