PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Regex rimuove tutte le occorrenze di più caratteri in una stringa

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.)