1

我想使用同一个表中的另一个字段来更新数据库表字段。目前我有这张表叫做来源。

Name    Code

在名称列中,我有像这个例子这样的值:

  1. '车轮上的交易'
  2. 'Homesru - 阿布扎比 - Madinat Zayed 黄金中心'

我有这个更新声明:

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

我怎样才能做到这一点?任何帮助表示赞赏。

4

3 回答 3

3

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

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

SQL Server Central:删除字符串中特定字符之间的空格?. 此论坛帖子将指向我在此处发布的下一个链接。但是很高兴知道他们在问和回答什么。

用新的替换多个空格,但您可以稍微修改它以替换您想要的任何字符。

您也可以依靠这个答案从 Aaron Bertrand 中查找并删除重复的字符串。

于 2013-11-11T14:26:39.013 回答
1

尝试

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

这将首先替换' - ''-'

于 2013-11-11T13:51:35.737 回答
0

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

于 2013-11-11T13:51:56.620 回答