Sql 正则表达式删除字符串中所有出现的多个字符
在我的PostgreSQL中,我想替换字符串中出现的所有字符Sql 正则表达式删除字符串中所有出现的多个字符,sql,regex,postgresql,pattern-matching,Sql,Regex,Postgresql,Pattern Matching,在我的PostgreSQL中,我想替换字符串中出现的所有字符(;) 我的问题是: update table_name set text = regexp_replace(text, '/[(;<>)]+/g', ''); updatetable_name set text=regexp_replace(text'/[(;)]+/g',''); 我想我的regexp是错的。有人能帮我吗?对于这个简单的案例,请使用更快的方法: UPDATE tbl SET text = transl
(;)
我的问题是:
update table_name set text = regexp_replace(text, '/[(;<>)]+/g', '');
updatetable_name set text=regexp_replace(text'/[(;)]+/g','');
我想我的regexp是错的。有人能帮我吗?对于这个简单的案例,请使用更快的方法:
UPDATE tbl SET text = translate(text, '(;<>)', '');
这样可以避免(昂贵的)空更新。(
NULL
在这种特殊情况下会自动覆盖。)Awesome。是的,这正是我想要实现的。非常感谢。实际上,OP的regex模式是正确的(它确实有/g标志),它应该在Postgres中写得有点不同。无论如何,关于translate
@raina77ow的观点非常好:是的,只是正则表达式的语法问题。我在示例中添加了括号,似乎OP也希望替换这些括号。
regexp_replace(text, '[(;<>)]', '', 'g');
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');