Come ripulire un campo di testo dai vuoti di troppo su Oracle
Lavorare con un database pieno di dati sporchi è all’ordine del giorno, e prima di elaborarli è necessario eseguire una pulizia di quelli che stiamo per utilizzare.
Ci ritroviamo nella situazione di dover ripulire un campo di testo, che sia un CHAR o un VARCHAR dagli spazi di troppo. Ovvero le stringhe che ci ritroviamo a dover ottimizzare sono come questa
variabile := ' correggiamo questo campo di testo ';
Per correggere gli spazi prima e dopo l’intera stringa possiamo usare la funzione nativa TRIM()
variabile := TRIM(variabile);
/variabile varrà 'correggiamo questo campo di testo'
ma per correggere gli spazi intermedi dovremo utilizzare una regexp, che andrà ad individuare tutti gli spazi consecutivi superiori ad 1, sostituendoli con uno spazio solo. Precisamente
variabile := REGEXP_REPLACE(variabile , '[[:space:]]+', ' ');
/variabile varrà 'correggiamo questo campo di testo'
Se vogliamo fare una prova massiva di funzionamento, possiamo eseguire questa query sulla ALL_SOURCE che andrà a visualizzare tutti i source del database con il testo non normalizzato, e la rispettiva normalizzazione
SELECT T.*,
TRIM(REGEXP_REPLACE(TEXT, '[[:space:]]+', ' ')) TEXT_WITHOUT_SPACE
FROM ALL_SOURCE T
ORDER BY 1, 2, 3, 4;