我没有看到关于这个主题的任何类似的问题,我不得不研究这个我现在正在做的事情.以为我会发布答案,以防其他人有同样的问题.
char(13)
是CR
.对于DOS-/Windows风格的CRLF
换行符,您需要char(13)+char(10)
,如:
'This is line 1.' + CHAR(13)+CHAR(10) + 'This is line 2.'
我在这里找到了答案:http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in-码/
您只需连接字符串并插入CHAR(13)
您想要换行的位置.
例:
DECLARE @text NVARCHAR(100) SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.' SELECT @text
这打印出以下内容:
这是第1行.
这是第2行.
另一种方法是这样的:
INSERT CRLF SELECT 'fox jumped'
也就是说,只需在编写查询时在查询中插入换行符,就会向数据库添加类似的中断.这适用于SQL Server Management Studio和Query Analyzer.我相信如果你在字符串上使用@符号,这也适用于C#.
string str = @"INSERT CRLF SELECT 'fox jumped'"
在SSMS中运行它,它显示SQL本身的换行符如何成为跨越行的字符串值的一部分:
PRINT 'Line 1 Line 2 Line 3' PRINT '' PRINT 'How long is a blank line feed?' PRINT LEN(' ') PRINT '' PRINT 'What are the ASCII values?' PRINT ASCII(SUBSTRING(' ',1,1)) PRINT ASCII(SUBSTRING(' ',2,1))
结果:
第1
行第2
行第3行
空白行有多长时间了?
2
什么是ASCII值?
13
10
或者,如果你想在一行(几乎!)上指定你的字符串,你可以REPLACE()
这样使用(可选择CHAR(13)+CHAR(10)
用作替换):
PRINT REPLACE('Line 1`Line 2`Line 3','`',' ')
关注Google ...
从网站上获取代码:
CREATE TABLE CRLF ( col1 VARCHAR(1000) ) INSERT CRLF SELECT 'The quick brown@' INSERT CRLF SELECT 'fox @jumped' INSERT CRLF SELECT '@over the ' INSERT CRLF SELECT 'log@' SELECT col1 FROM CRLF Returns: col1 ----------------- The quick brown@ fox @jumped @over the log@ (4 row(s) affected) UPDATE CRLF SET col1 = REPLACE(col1, '@', CHAR(13))
看起来可以通过用CHAR替换占位符来完成(13)
好问题,从来没有自己做过:)
我来到这里是因为我担心我在C#字符串中指定的cr-lfs没有在SQl Server Management Studio查询响应中显示.
事实证明,他们在那里,但没有被展示.
要"看到"cr-lfs,请使用如下的print语句:
declare @tmp varchar(500) select @tmp = msgbody from emailssentlog where id=6769; print @tmp