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

15

我已经在StackOverflow上搜索了所有可能的解决方案,以了解如何在SQL文本字符串中插入换行符。 我参考了此链接,但没有成功。 如何在SQL Server VARCHAR / NVARCHAR字符串中插入换行符

但是对我来说,这些解决方案都不起作用。

这就是我尝试做的事情:

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

但是这是生成的输出:(Select Col from sample where dex = 2)

这是第一行。 这是第二行。

我想要的输出是:

这是第一行。
这是第二行。

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

有什么想法为什么它不起作用?


如果您在SQL Management Studio中运行它,它可能不会以那种方式显示,因为系统中呈现数据的方式受到限制。如果您将其复制并粘贴到其他地方,则会分成两行。 - phroureo
len(col)将具有CR LF。 - paparazzo
4个回答

14

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

要查看它,您可以使用cntrl + T快捷键切换到文本视图或像下面这样:

enter image description here

我为您的查询获得的结果如下(并且它们有效): 在此输入图片描述

11

它的表现非常完美:

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;

在线演示

输出:

enter image description here

问题出在 SSMS 的网格视图中跳过了换行符(以及其他字符),否则你将得到像 Excel 中不同的行高。


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

在线演示-SEDE在线演示-SEDE-文本视图

输出:

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.';

6

虽然有点晚加入本次讨论,但在SSMS 2016中,工具|选项菜单下的查询结果/SQL Server/结果向网格中有一个名为“拷贝或保存时保留回车换行符”的选项。勾选此框可使您从网格结果中复制单元格的值到另一个查询窗口,仍然保留换行。


我必须重新启动SSMS 2017才能使此选项生效。 - deerchao
这就是解决方法。我不需要重新启动SSMS。没有它肯定无法正常工作。 - bdwakefield

6

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

我创建了一个演示页面来说明这一点,包括两个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.

查看它:SqlFiddle演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接