是否可以进行"查找和替换"以下是什么?
UPDATE __table__ SET __column__ = replace(__column__, ' ', '_');
如何定义要查找的字符串数组(','
,';'
,':'
,' '
)以替换为'_'
?
答案 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')