更新列中值的一部分

时间:2014-10-23 02:05:29

标签: sql postgresql replace sql-update

我想更新该领域的部分。

例如,我想改变

aacity,bbcity,cccity,ddcity

aatown,bbtown,cctown,ddtown.

有没有办法在一个查询中实现这个目标?

2 个答案:

答案 0 :(得分:1)

SQL FIDDLE

UPDATE test
SET col = regexp_replace(col, '(?:city)','town','g');

答案 1 :(得分:0)

不要使用昂贵的正则表达式进行静态替换。使用简单而便宜的replace()。替换字符串中子字符串的所有次出现。

此外,无条件地运行UPDATE。这将为每一行写一个新的行版本,即使没有任何变化。昂贵的废话。

改为使用:

UPDATE test
SET    col = replace(col, 'city', 'town')
WHERE  col <> replace(col, 'city', 'town');  -- only where necessary