我想使用同一个表中的另一个字段更新数据库表字段。目前我有这个名为sources的表。
Name Code
在名称列中,我有类似这样的值:
我正在阅读此更新声明:
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
我怎样才能实现这个目标?任何帮助表示赞赏。
答案 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