Use o muito mais rápido
translate()
para este caso simples:UPDATE tbl SET text = translate(text, '(;<>)', '');
Cada caractere no segundo parâmetro que não tem contrapartida no terceiro parâmetro é substituído por nada.
A solução de expressão regular pode ser assim:
regexp_replace(text, '[(;<>)]', '', 'g');
O elemento essencial é o 4º parâmetro
'g'
para substituir "globalmente" em vez de apenas a primeira correspondência. O segundo parâmetro é uma classe de caracteres.Você estava no caminho certo, apenas uma questão de sintaxe para
regexp_replace()
. Dica sobre UPDATE
Se você não espera todos linhas a serem alteradas, eu recomendo fortemente que você adapte seu
UPDATE
declaração:UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
Dessa forma, você evita atualizações vazias (caras). (
NULL
é coberto automaticamente neste caso particular.)