如何在SQL Server中从变量中删除所有的换行符?

14

我该如何在SQL Server中从变量中删除所有换行符?

我使用的是SQL Server 2008 R2。

我需要在T-SQL命令中从变量中删除所有换行符。

例如:

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

它的输出结果是这样的:

 12345
        25487
        154814 

但是我想要获取这样的字符串:

12345 25487 154814

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

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

2
NewLine 是 CHAR(10)CHAR(13)。尝试将其移除。 - LuigiEdlCarno
1
要查看ASCII字符,请访问http://technet.microsoft.com/en-us/library/ms177545.aspx。 - Justin
4个回答

29

您必须使用这个查询

Declare @A NVarChar(500);

Set @A = N' 12345
        25487
        154814 ';

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

Print @A;

3

如果你想让输出结果和示例一模一样,使用这个技巧

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

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

PRINT @A

它将首先替换您的换行符,然后将连续空格替换为一个。请注意,为了避免不愉快的情况,最好对输入字符串进行url编码。


3

Replace(@A,CHAR(13)+CHAR(10),' ')对我来说无法去除所有空格。

相反,我使用了

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

这个方法效果很好!


0

<>的hack虽然很不错,但是如果文本中已经有<>(如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)替换为一个空格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接