Usa il molto più veloce translate()
per questo semplice caso:
UPDATE tbl SET text = translate(text, '(;<>)', '');
Ogni carattere nel secondo parametro che non ha una controparte nel terzo parametro viene sostituito con niente.
La soluzione dell'espressione regolare potrebbe assomigliare a questa:
regexp_replace(text, '[(;<>)]', '', 'g');
Elemento essenziale è il 4° parametro 'g'
per sostituire "globalmente" invece della prima partita. Il secondo parametro è una classe di caratteri.
Eri sulla strada giusta, solo una questione di sintassi per regexp_replace()
.
Suggerimento su UPDATE
Se non ti aspetti tutto righe da modificare, consiglio vivamente di adattare il tuo UPDATE
dichiarazione:
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
In questo modo eviti aggiornamenti vuoti (costosi). (NULL
è coperto automaticamente in questo caso particolare.)