Utilisez le translate()
pour ce cas simple :
UPDATE tbl SET text = translate(text, '(;<>)', '');
Chaque caractère du deuxième paramètre qui n'a pas d'équivalent dans le troisième paramètre est remplacé par rien.
La solution d'expression régulière pourrait ressembler à ceci :
regexp_replace(text, '[(;<>)]', '', 'g');
L'élément essentiel est le 4ème paramètre 'g'
pour remplacer "globalement" au lieu de simplement la première correspondance. Le deuxième paramètre est une classe de caractères.
Vous étiez sur la bonne voie, juste une question de syntaxe pour regexp_replace()
.
Conseil sur UPDATE
Si vous ne vous attendez pas à tous lignes à modifier, je vous conseille vivement d'adapter votre UPDATE
déclaration :
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
De cette façon, vous évitez les mises à jour vides (coûteuses). (NULL
est couvert automatiquement dans ce cas particulier.)