Use el mucho más rápido translate()
para este caso simple:
UPDATE tbl SET text = translate(text, '(;<>)', '');
Cada carácter en el segundo parámetro que no tiene equivalente en el tercer parámetro se reemplaza por nada.
La solución de expresión regular podría verse así:
regexp_replace(text, '[(;<>)]', '', 'g');
El elemento esencial es el cuarto parámetro 'g'
para reemplazar "globalmente" en lugar de solo la primera coincidencia. El segundo parámetro es una clase de carácter.
Estabas en el camino correcto, solo una cuestión de sintaxis para regexp_replace()
.
Sugerencia sobre UPDATE
Si no esperas todas filas a cambiar, le recomiendo encarecidamente que adapte su UPDATE
declaración:
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
De esta forma evita actualizaciones vacías (costosas). (NULL
se cubre automáticamente en este caso particular).