90a*_*yss 9 sql t-sql sql-server
我搜索了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.')
Run Code Online (Sandbox Code Playgroud)
但这是生成的输出:(从样本中选择Col,其中dex = 2)
这是第1行.这是第2行.
这是我想要的输出:
这是第1行.
这是第2行.
如果有帮助,我正在使用SQL服务器和SSMS.
任何想法为什么它不起作用?
那你的查询工作得很好.默认情况下,SSMS会在网格视图中显示所有查询输出,该视图不显示换行符.
要查看它,您可以使用cntrl+ T快捷键切换到文本视图,如下所示
它完美地运作:
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;
Run Code Online (Sandbox Code Playgroud)
输出:
"问题"是SSMS跳过换行符(以及其他人)的网格视图.否则你会得到不同的行高度Excel.
你可以观察到相同的行为SEDE.
LiveDemo-SEDELiveDemo-SEDE-TextView
输出:
你可以用它来比较它:
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.';
Run Code Online (Sandbox Code Playgroud)
CR / LF字符在那里,只是在您的输出格式中,它们被忽略了。
我用2 VARCHAR列创建了一个小提琴来说明这一点。在第一个中,我插入带no的文本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.'
)
;
Run Code Online (Sandbox Code Playgroud)
如果您运行查询
SELECT * FROM sample
Run Code Online (Sandbox Code Playgroud)
纯文本格式的结果是:
| dex | colnocr | col |
|-----|--------------------------------|----------------------------------|
| 2 | This is line 1.This is line 2. | This is line 1.
This is line 2. |
Run Code Online (Sandbox Code Playgroud)
但是如果以表格形式运行它:
dex colnocr col
2 This is line 1.This is line 2. This is line 1. This is line 2.
Run Code Online (Sandbox Code Playgroud)
检查 : SqlFiddleDemo
小智 5
此讨论稍晚一些,但在SSMS 2016中,“工具” |“工具” |“选项” 查询结果/ SQL Server /结果到网格下的选项菜单称为“在复制或保存时保留CR / LF”。选中此框将使您可以将网格结果中的某个单元格中的值复制到另一个查询窗口,并且仍然具有换行符。
| 归档时间: |
|
| 查看次数: |
45688 次 |
| 最近记录: |