SQL:在varchar字符串中插入换行符

时间:2016-04-13 19:51:38

标签: sql sql-server tsql

我已经在StackOverflow中搜索了有关如何在SQL文本字符串中插入换行符的所有可能解决方案。我已经提到了这个链接,但无济于事。 How to insert a line break in a SQL Server VARCHAR/NVARCHAR string

但是没有一个解决方案适合我。

这就是我想要做的事情:

insert into sample (dex, col) 
values (2, 'This is line 1.' + CHAR(13)+CHAR(10) + 'This is line 2.')

但这是生成的输出:(从样本中选择Col,其中dex = 2)

  

这是第1行。这是第2行。

这是我想要的输出:

  

这是第1行   这是第2行。

如果有帮助,我会使用SQL服务器和SSMS。

为什么它不起作用?

4 个答案:

答案 0 :(得分:9)

你的查询完全正常。 默认情况下,SSMS会在网格视图中显示所有查询输出,该视图不显示换行符。

要查看它,您可以使用 cntrl + T 快捷方式切换到文字视图,如下所示

enter image description here

我的查询结果如下(他们的工作) enter image description here

答案 1 :(得分:7)

完美无缺:

CREATE TABLE sample(dex INT, col VARCHAR(100));

INSERT INTO sample(dex, col) 
VALUES (2, 'This is line 1.' + CHAR(13)+CHAR(10) + 'This is line 2.');

SELECT *
FROM sample;

LiveDemo

输出:

enter image description here

“问题”是跳过换行符(以及其他人)的SSMS网格视图。否则,您将获得与Excel中不同的行高。

您可以在SEDE中观察到相同的行为。

LiveDemo-SEDE LiveDemo-SEDE-TextView

输出:

enter image description here

enter image description here

您可以使用以下方式对其进行比较:

SELECT 'This is line 1.' + CHAR(13)+CHAR(10) + 'This is line 2.';
PRINT  'This is line 1.' + CHAR(13)+CHAR(10) + 'This is line 2.';

答案 2 :(得分:5)

CR / LF字符在那里,只是在你的输出格式中,它们被忽略了。

我创建了一个小提琴,用2 VARCHAR列来说明这一点。在第一个中,我插入了没有CR/LF的文本,在第二个中我包含了它们

CREATE TABLE sample (dex INT, colnocr VARCHAR(50), col VARCHAR(50)) ;
insert into sample (dex, colnocr, col) values 
(2, 
 'This is line 1.' + 'This is line 2.',
 'This is line 1.' + CHAR(13) + CHAR(10) + 'This is line 2.'
)
;

如果您运行查询

SELECT * FROM sample

纯文本中的结果是:

| dex |                        colnocr |                              col |
|-----|--------------------------------|----------------------------------|
|   2 | This is line 1.This is line 2. | This is line 1.
This is line 2. |

但如果您在表格

中运行它
dex     colnocr                                                     col
2       This is line 1.This is line 2.      This is line 1. This is line 2.

检查: SqlFiddleDemo

答案 3 :(得分:4)

这次讨论有点晚,但在SSMS 2016中,工具|上有一个选项“查询结果/ SQL Server /结果到网格”下的“选项”菜单称为“复制或保存时保留CR / LF”。选中此框将允许您将网格结果中的单元格中的值复制到另一个查询窗口,并且仍然具有换行符。