2016-08-18 119 views
0

Microsoft SQL Server 2008 R2是否从我的数据中删除回车?这是一个例子。如果我通过电子邮件将返回的值复制并粘贴到记事本中,则所有回车符都将被删除。我怎样才能让他们在?这在2014年版本中不会发生。Microsoft SQL Server 2008 R2删除回车

Declare @crlf char(2) = CHAR(13) + CHAR(10) 
Declare @mytable table(mytext varchar(100)) 
Declare @myinfo varchar(100) 

SET @myinfo = 'This' + @crlf + 'is' + @crlf + 'foobar' 

INSERT @mytable 
VALUES(@myinfo) 

SELECT mytext 
FROM @mytable 

感谢

回答

1

“看”可以肯定的是怎么回事,显示文本的十六进制表示。例如: -

Declare @crlf char(2) = CHAR(13) + CHAR(10) 
Declare @mytable table(mytext varchar(100)) 
Declare @myinfo varchar(100) 

SET @myinfo = 'This' + @crlf + 'is' + @crlf + 'foobar' 

select CONVERT(varbinary(200), @myinfo) as HexRepresentationBefore 

INSERT @mytable 
VALUES(@myinfo) 

SELECT mytext, CONVERT(varbinary(200), mytext) as HexRepresentationAfter 
FROM @mytable 

这表明双方HexRepresentationBefore和HexRepresentationAfter为:

0x546869730D0A69730D0A666F6F626172

你可以看到回车(十六进制0D)和换行(十六进制0A)确实是在文本中。另外,如果您使用SSMS:如果使用“结果到网格”选项,请尝试使用“结果到文本”选项。显示varchar时,回车和换行可能会更加明显。

1

它不会删除它,它只是没有在结果窗口中显示它。

你可以得到字符串的长度,它仍然是16个字符。或者使用子字符串来检查。

另外:

SELECT @myinfo = mytext FROM @mytable 
PRINT @myinfo