lunedì 7 aprile 2008

Rimozione dei caratteri di andata a capo in un campo testo

Mi sono trovato a lavorare con un database ove risiedevano dei dati importati manualmente tramite un altro programma. Una tabella in particolare aveva un campo di tipo text che inglobava, al suo interno, anche dei caratteri di andata a capo (nello specifico \r\n). Questo rappresentava un problema quando si cercava di fare un'estrazione (ad esempio CSV) poiché il numero delle righe prodotte e il loro contenuto veniva sfalsato.

Fortunamente PostgreSQL mette a disposizione una comoda funzione, che consente di cambiare una stringa esatta di testo in un'altra, restituendo quest'ultima. In questo modo è possibile allora eseguire un semplice update della tabella per rimuovere i caratteri di andata a capo.

Supponendo che la tabella in questione si chiami varie e che la colonna contentente il testo da pulire sia note allora la seguente query risolve il problema:

update varie set note = replace(note, E'\r\n', ' ');

Da notare l'uso della E per indicare che la stringa che segue contiene dei caratteri sottoposti ad escaping. Ovviamente è bene fare comunque un backup della tabella prima della modifica!

Nessun commento: