Použijte mnohem rychlejší translate()
pro tento jednoduchý případ:
UPDATE tbl SET text = translate(text, '(;<>)', '');
Každý znak ve druhém parametru, který nemá protějšek ve třetím parametru, není nahrazen ničím.
Řešení regulárního výrazu by mohlo vypadat takto:
regexp_replace(text, '[(;<>)]', '', 'g');
Základním prvkem je 4. parametr 'g'
nahradit „globálně“ namísto pouhého prvního zápasu. Druhý parametr je třída znaků.
Byli jste na správné cestě, jen otázka syntaxe pro regexp_replace()
.
Nápověda k UPDATE
Pokud neočekáváte vše řádky, které chcete změnit, důrazně doporučuji upravit UPDATE
prohlášení:
UPDATE tbl
SET text = translate(text, '(;<>)', '')
WHERE text <> translate(text, '(;<>)', '');
Vyhnete se tak (drahým) prázdným aktualizacím. (NULL
je v tomto konkrétním případě pokryto automaticky.)