Gebruik de veel snellere translate()
voor dit eenvoudige geval:
UPDATE tbl SET text = translate(text, '(;<>)', '');
Elk teken in de tweede parameter dat geen tegenhanger heeft in de derde parameter wordt door niets vervangen.
De oplossing voor reguliere expressies kan er als volgt uitzien:
regexp_replace(text, '[(;<>)]', '', 'g');
Essentieel element is de 4e parameter 'g'
om "wereldwijd" te vervangen in plaats van alleen de eerste overeenkomst. De tweede parameter is een tekenklasse.
Je was op de goede weg, alleen een kwestie van syntaxis voor regexp_replace()
.
Hint op UPDATE
Als je niet alles verwacht rijen die moeten worden gewijzigd, raad ik u ten zeerste aan om uw UPDATE
. aan te passen verklaring:
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
Zo vermijd je (dure) lege updates. (NULL
wordt in dit specifieke geval automatisch gedekt.)