Eliminare gli spazi superflui da una stringa su PL/SQL

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;

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *