Как вставить перенос строки в строке VARCHAR/NVARCHAR SQL Server
Я не нашел никаких похожих вопросов по этой теме, и мне пришлось провести исследование для работы над одним проектом. Решил опубликовать ответ здесь на случай, если кто-то столкнется с такой же проблемой.
5 ответ(ов)
char(13)
представляет собой символ возврата каретки (CR). Для использования разрывов строки в стиле DOS/Windows, которые требуют сочетания CRLF
, вам нужно использовать char(13)
и char(10)
вместе. Это можно сделать следующим образом:
'Это первая строка.' + CHAR(13) + CHAR(10) + 'Это вторая строка.'
Таким образом, вы получите правильный перенос строки.
Я нашёл ответ здесь: http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in-code/
Вы можете просто конкатенировать строку и вставить CHAR(13)
в том месте, где хотите добавить перенос строки.
Пример:
DECLARE @text NVARCHAR(100)
SET @text = 'Это строка 1.' + CHAR(13) + 'Это строка 2.'
SELECT @text
Это выведет следующее:
Это строка 1. Это строка 2.
Другой способ сделать это выглядит следующим образом:
INSERT CRLF SELECT 'fox
jumped'
То есть, просто добавив перенос строки в вашем запросе во время его написания, вы добавите подобный перенос в базу данных. Это работает в SQL Server Management Studio и Query Analyzer. Я полагаю, что это также будет работать в C#, если вы используете символ @ в строках.
string str = @"INSERT CRLF SELECT 'fox
jumped'";
Когда вы запускаете этот код в SQL Server Management Studio (SSMS), он демонстрирует, как переносы строки в самом SQL становятся частью строковых значений, занимающих несколько строк:
PRINT 'Строка 1
Строка 2
Строка 3'
PRINT ''
PRINT 'Какова длина пустого переноса строки?'
PRINT LEN('
')
PRINT ''
PRINT 'Каковы ASCII значения?'
PRINT ASCII(SUBSTRING('
',1,1))
PRINT ASCII(SUBSTRING('
',2,1))
Результат будет следующим:
Строка 1
Строка 2
Строка 3
Какова длина пустого переноса строки?
2
Каковы ASCII значения?
13
10
Если вы предпочитаете указать вашу строку в одной строке (почти!), вы можете воспользоваться функцией REPLACE()
, как показано ниже (по желанию можно использовать CHAR(13)+CHAR(10)
в качестве замены):
PRINT REPLACE('Строка 1`Строка 2`Строка 3','`','
')
Таким образом, можно легко управлять переносами строк в строковых значениях, как их отображение, так и длину.
Вы можете использовать функцию concat
, чтобы объединить строки с символом новой строки. Например, можно сделать так:
concat('Это строка 1.', 0xd0a, 'Это строка 2.')
или же, если вы работаете с Unicode, то так:
concat(N'Это строка 1.', 0xd000a, N'Это строка 2.')
Оба примера объединяют строки и вставляют символ новой строки между ними.
"Вставка результатов хранимой процедуры в временную таблицу"
Как экранировать одинарную кавычку в SQL Server?
Как выполнить оператор UPDATE с JOIN в SQL Server?
Обновление данных в одной таблице из другой на основе совпадения ID
Сброс начального значения идентификатора после удаления записей в SQL Server