SQL删除字符串中特定字符之间的空格?

时间:2013-11-11 13:46:37

标签: sql sql-server-2008

我想使用同一个表中的另一个字段更新数据库表字段。目前我有这个名为sources的表。

Name    Code

在名称列中,我有类似这样的值:

  1. '车轮优惠'
  2. 'Homesru - 阿布扎比 - Madinat Zayed Gold Centre'
  3. 我正在阅读此更新声明:

    UPDATE Sources
    SET    Code = REPLACE((LTRIM(RTRIM(Name))),' ','-')
    

    结果是:

    Deals-On-Wheels-Al-Aweer
    

    这很好。

    但对于第二个我有这个:

    Homesru---Abu-Dhabi---Madinat-Zayed-Gold-Centre
    

    我希望它是这样的:

    Homesru-Abu-Dhabi-Madinat-Zayed-Gold-Centre
    

    我怎样才能实现这个目标?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

正如@DanielE所建议的那样。我的答案将指向一个更全面的解决方案,以防您需要替换字符串上的字符的重复/三重/四重/ ...出现。

我不会为这个问题创建一个完整的解决方案,这是一个反复出现的问题,并且已经有很好的解决方案。请查看以下链接:

SQL Server Central: remove spaces between specific character in a string?。这篇论坛帖子将指向我在这里发布的下一个链接。但很高兴知道他们在问什么和回答。

Replace multiple spaces with new one但您可以稍微修改它以替换您想要的任何字符。

您也可以依赖Aaron Bertrand的答案Find and remove repeated strings

答案 1 :(得分:1)

REPLACE((LTRIM(RTRIM(REPLACE((LTRIM(RTRIM(Name))),' - ','-')))),' ','-')

这将首先用' - '

替换'-'

答案 2 :(得分:0)

您可能希望使用UDF进行正则表达式搜索和替换。见https://launchpad.net/mysql-udf-regexp