SQL Server过程输出CR和LF在复制和粘贴时替换为空格

时间:2013-11-01 16:32:19

标签: sql sql-server

我有一个奇怪的问题,我在网上什么都找不到,希望这里有人可以提供一些见解:

在存储过程中,我使用游标遍历表并将单个文本字段(varchar)的所有值整理到单个字符串变量中。我用行车返回/换行符分隔的每一行(字符13和10)。

如果我将变量打印到屏幕上,那么CR和LF字符显然就在那里,并且在消息窗口的输出中显示正如我所期望的那样将字符串格式化为单独的行。

如果我在适当的位置检查字符串变量中的ASCII值,则会显示正确的ASCII值(分别为13和10)

如果我将字符串插入临时表中,我还可以看到CR和LF字符已被保留(通过再次检查代码中的ASCII值)。

但是如果我'选择'变量使其出现在网格中然后复制输出并粘贴到编辑器(记事本,单词,SQL查询窗口等)中CR和LF已被空格替换。

我认为这与普通的复制/粘贴功能无关,因为从任何其他环境复制会保留所有字符。在SQL查询分析器网格输出中复制单元格时,是否存在复制工具特有的内容?

虽然这对我来说不是一个阻碍,但这确实意味着我必须跳过一些我觉得我不应该去的篮球 - 而且,我只是好奇。

干杯,J

2 个答案:

答案 0 :(得分:0)

假设您使用的是SQL Server Management Studio,请使用“结果文本”(Ctrl + T)。这应该保持换行符。

答案 1 :(得分:0)

如果我在管理工作室中运行此操作,则将生成的单元格复制并粘贴到记事本中,它会正确显示:

select 'line1' + char(13) + char(10) + 'line2'

或者你可以试试这个:

select 'line1
line2'

如果是unicode问题,你可以尝试使用unicode crlf等价物:

select N'line1' + nchar(0x000D) + N'line2'