在Postgres中找到多个字符串并替换为单个字符串

时间:2014-12-29 15:14:14

标签: postgresql pattern-matching

是否可以进行"查找和替换"以下是什么?

UPDATE __table__ SET __column__ = replace(__column__, ' ', '_');

如何定义要查找的字符串数组(','';'':'' ')以替换为'_'

2 个答案:

答案 0 :(得分:2)

regexp_replace()功能强大,功能多样......而且速度慢。

如果可以,请使用普通(功能较弱且功能多样)replace(),速度要快得多。

对于手头的简单情况(用另一个单个字符替换单个字符的列表),使用translate() - 更简单,更快捷。而且更不容易出错。

UPDATE tbl
SET    col =  translate(col, ',;: ', '____')
WHERE  col <> translate(col, ',;: ', '____'); -- avoid empty updates

仅更新实际更改的行。无条件更新所有行是一种常见的(可能是昂贵的)错误。详细说明:

请注意,这只会替换空格字符(' '),而正则表达式中的类缩写\s会匹配字符类[[:space:]]的所有whitespace characters。< / p>

答案 1 :(得分:1)

阅读有关Bracket Expressions的部分,其中介绍了如何搜索字符串中的字符以替换

但这应该对你有用

UPDATE __table__ SET __column__ = regexp_replace( __column__, E'[\\s,;:]','_','g')