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

问题描述 投票:0回答:2

是否可以使用以下内容进行“查找和替换”?

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

如何定义要查找的字符串数组(

','
';'
':'
' '
)以替换为
'_'

postgresql pattern-matching
2个回答
3
投票

regexp_replace()
功能强大、用途广泛...但速度很慢。

尽可能使用普通的(功能较弱且用途广泛)

replace()
,这样速度更快。

对于手头的简单情况(将列表中的每个单个字符替换为另一个单个字符),请使用

translate()
- 甚至更简单、更快。而且也不易出错。

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

仅更新实际更改的行。无条件更新所有行是一个常见的(可能代价高昂的)错误。详情:

请注意,

' '
仅替换空格字符(
' '
),而正则表达式中的类简写
\s
匹配字符类[[:space:]]的所有
空白字符


1
投票

阅读有关括号表达式的部分,其中解释了如何在字符串中搜索要替换的字符

但这应该对你有用

UPDATE __table__ SET __column__ = regexp_replace( __column__, E'[\\s,;:]','_','g')
© www.soinside.com 2019 - 2024. All rights reserved.