Brug den meget hurtigere translate()
for dette simple tilfælde:
UPDATE tbl SET text = translate(text, '(;<>)', '');
Hvert tegn i den anden parameter, der ikke har nogen modpart i den tredje parameter, erstattes med ingenting.
Løsningen med regulære udtryk kunne se sådan ud:
regexp_replace(text, '[(;<>)]', '', 'g');
Det væsentlige element er den 4. parameter 'g'
at erstatte "globalt" i stedet for kun den første kamp. Den anden parameter er en karakterklasse.
Du var på rette vej, kun et spørgsmål om syntaks for regexp_replace()
.
Tip til OPDATERING
Hvis du ikke forventer alle rækker, der skal ændres, vil jeg kraftigt anbefale at tilpasse din OPDATERING
erklæring:
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
På den måde undgår du (dyre) tomme opdateringer. (NULL
dækkes automatisk i dette særlige tilfælde.)