是否可以使用以下内容进行“查找和替换”?
UPDATE __table__ SET __column__ = replace(__column__, ' ', '_');
如何定义要查找的字符串数组(
','
、';'
、':'
、' '
)以替换为'_'
?
regexp_replace()
功能强大、用途广泛...但速度很慢。
replace()
,这样速度更快。
对于手头的简单情况(将列表中的每个单个字符替换为另一个单个字符),请使用
translate()
- 甚至更简单、更快。而且也不易出错。
UPDATE tbl
SET col = translate(col, ',;: ', '____')
WHERE col <> translate(col, ',;: ', '____'); -- avoid empty updates
仅更新实际更改的行。无条件更新所有行是一个常见的(可能代价高昂的)错误。详情:
请注意,
' '
仅替换空格字符(' '
),而正则表达式中的类简写\s
匹配字符类[[:space:]]
的所有空白字符。
阅读有关括号表达式的部分,其中解释了如何在字符串中搜索要替换的字符
但这应该对你有用
UPDATE __table__ SET __column__ = regexp_replace( __column__, E'[\\s,;:]','_','g')