14

如何从 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

4 回答 4

29

您必须使用此查询

Declare @A NVarChar(500);

Set @A = N' 12345
        25487
        154814 ';

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

Print @A;
于 2013-08-06T06:38:14.270 回答
3

如果您希望它看起来与示例输出中的完全一样,请使用以下技巧

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

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

PRINT @A

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

于 2013-08-06T06:46:22.097 回答
3

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

相反,我使用

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

这很好用!

于 2019-03-29T14:40:15.590 回答
0

hack<>很好,但如果<>文本中已经存在(如 HTML 中),则可能无法正常工作。

char(13)改用and会更好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)用空格替换。

于 2020-05-20T14:18:57.430 回答