【问题标题】:How to remove duplicate space from the string using T-SQL [duplicate]如何使用 T-SQL 从字符串中删除重复空格 [重复]
【发布时间】:2018-12-18 23:02:31
【问题描述】:

我有一个像这样的字符串'Hello world'。我正在使用下面的代码从字符串中删除重复的空格。但它会从字符串中删除<>

SELECT ' Hello  <>   world ' AS Name
INTO #Temp;

SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)), ' ', '<>'), '><', ''), '<>', ' ') AS CleanName
FROM #Temp;

还有其他选择吗?

【问题讨论】:

  • @SRM :不是重复的,您所指的问题会删除所有空格,而 OP 希望在字符串中间保留非重复空格

标签: sql sql-server database tsql


【解决方案1】:

改用这个表达式,它依赖于不可打印的 ASCII 字符:

SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Name)),' ','CHAR(17)CHAR(18)'),'CHAR(18)CHAR(17)',''),'CHAR(17)CHAR(18)',' ') AS CleanName
FROM #Temp;

产量:

Hello <> world

【讨论】:

    【解决方案2】:

    也许这可以帮助你:

    declare @Name varchar(200)
    select @Name = ' Hello  <>   world '
    while charindex('  ',@Name)>0 select @Name=REPLACE(@Name,'  ',' ')
    select @Name
    

    【讨论】:

      【解决方案3】:

      技术很扎实,但如果你想保留&lt;&gt;,那么你可以使用一种罕见的文本模式

      示例

      SELECT ltrim(rtrim(replace(replace(replace(Name,' ','†‡'),'‡†',''),'†‡',' ')))
      FROM #Temp;
      

      退货

      Hello <> world
      

      注意ltrim(rtrim(...)) 是可选的

      【讨论】:

        猜你喜欢
        • 2021-03-04
        • 1970-01-01
        • 2011-12-07
        • 2013-09-06
        • 2013-04-14
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        • 2014-02-13
        相关资源
        最近更新 更多