Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server过程输出CR和LF在复制和粘贴时替换为空格_Sql_Sql Server - Fatal编程技术网

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

SQL Server过程输出CR和LF在复制和粘贴时替换为空格,sql,sql-server,Sql,Sql Server,我有一个奇怪的问题,我在网上找不到,希望这里的人能提供一些见解: 在存储过程中,我使用游标遍历表,并将单个文本字段(varchar)的所有值整理为单个字符串变量。我用回车符/换行符(字符13和10)分隔的每一行 如果我将变量打印到屏幕上,CR和LF字符将清晰地显示在那里,并且在消息窗口的输出中显示,正如我所期望的那样,将字符串格式化为单独的行 如果我在适当的位置检查字符串变量中的ASCII值,则会显示正确的ASCII值(分别为13和10) 如果我将字符串插入到临时表中,我还可以看到CR和LF字符

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

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

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

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

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

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

我认为这与正常的复制/粘贴功能无关,因为从任何其他环境复制都会保留所有字符。在SQL查询分析器网格输出中复制单元格时,复制工具是否有什么特殊之处

虽然这对我来说不是一个阻碍,但它确实意味着我必须跳出一些我认为不应该跳出的障碍——而且,我只是好奇而已


干杯,J

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

如果我在management studio中运行此操作,然后将生成的单元格复制并粘贴到记事本中,它将正确显示:

select 'line1' + char(13) + char(10) + 'line2'
或者,您可以尝试以下方法:

select 'line1
line2'
如果是unicode问题,您可以尝试使用unicode crlf等效项:

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

我真的不明白你说的用空格替换CR和LF字符是什么意思。你怎么看的?CR和LF字符通常是不可见字符。那么,您是如何确定它们正在被更改的呢?这只是一个客户端网格处理CR+LF的能力问题,有些可以,有些不能。您应该包括您正在使用的management studio版本。我使用的是11.0.3128.0,无法重现此问题