【问题标题】:How I can remove all NewLine from a variable in SQL Server?如何从 SQL Server 中的变量中删除所有 NewLine?
【发布时间】:2013-08-07 01:07:57
【问题描述】:

如何从 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),' ')

【问题讨论】:

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


【解决方案1】:

您必须使用此查询

Declare @A NVarChar(500);

Set @A = N' 12345
        25487
        154814 ';

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

Print @A;

【讨论】:

    【解决方案2】:

    如果您希望它看起来与您的示例输出完全相同,请使用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 编码以避免令人讨厌的意外是明智的。

    【讨论】:

      【解决方案3】:

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

      我用了

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

      这很好用!

      【讨论】:

        【解决方案4】:

        &lt;&gt; 的 hack 很不错,但如果文本中已经有 &lt;&gt;(如 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) 替换为空格。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-17
          • 1970-01-01
          • 1970-01-01
          • 2019-01-07
          • 1970-01-01
          • 1970-01-01
          • 2013-11-11
          • 2016-06-12
          相关资源
          最近更新 更多