我如何从SQL Server中的变量中删除所有NewLine?

时间:2013-08-06 06:36:08

标签: sql sql-server tsql sql-server-2008-r2

我如何从SQL Server中的变量中删除所有NewLine?

我使用的是SQL Server 2008 R2。

我需要在T-Sql命令中删除变量中的所有NewLine。

例如:

Declare @A NVarChar(500) 
Set @A = ' 12345
        25487
        154814 '
Print @A    

它打印得像这样

 12345
        25487
        154814 

但我想得到像这样的字符串

  

12345 25487 154814

我写这个查询但不起作用:

Set @A = Replace(@A,CHAR(13),' ')

4 个答案:

答案 0 :(得分:27)

您必须使用此查询

Declare @A NVarChar(500);

Set @A = N' 12345
        25487
        154814 ';

Set @A = Replace(@A,CHAR(13)+CHAR(10),' ');

Print @A;

答案 1 :(得分:3)

如果您希望它看起来与示例输出完全相同,请使用this hack

DECLARE @A nvarchar(500) 
SET @A = ' 12345
        25487
        154814 '

SET @A = 
  replace(
    replace(
      replace(
        replace(@A, char(13)+char(10),' '),
      ' ','<>'),
    '><','')
  ,'<>',' ')

PRINT @A

它将首先替换你的换行符,然后用一个替换你的连续空格。请注意,对输入字符串进行url编码是明智的,以避免令人讨厌的意外。

答案 2 :(得分:1)

Replace(@A,CHAR(13)+CHAR(10),' ')并没有为我删除所有空格。

我代替了

replace(replace(@A, char(13),N' '),char(10),N' ')

这很好!

答案 3 :(得分:0)

使用<>进行黑客攻击是很好的方法,但是如果文本中已经存在<>(例如HTML),则可能无法正常工作。

最好改用char(13)char(10)。首先,将char(13)替换为char(13)+char(10),将char(10)替换为char(13)+char(10),并将' '替换为char(13)+char(10),以解决两者都不存在的问题。

然后,将char(10)+char(13)替换为'',最后将char(13)+char(10)替换为空格。