2011-01-09 27 views
7

Ho un database SQLite con oltre 400k di record. Ho appena scoperto che alcuni campi di testo hanno dei ritorni a capo in essi e volevo eliminarli. Ho voluto copiare la struttura della tabella originale e quindi fare qualcosa di simile:Come rimuovere i ritorni a capo in un campo di testo in sqlite?

INSERT INTO large_table_copy 
SELECT date, other_fields, replace(dirty_text_field,XXX,"") 
FROM large_table 

Dove XXX è tutto ciò che il codice sarebbe per un ritorno a capo. Non è \n. Ma non riesco a scoprire di cosa si tratta.

risposta

17

SQLite consente di mettere interruzioni di riga all'interno di stringhe letterali, come questo:

SELECT replace(dirty_text_field, ' 
', ''); 

Se non ti piace questa sintassi, è possibile passare la stringa come un BLOB: X'0D' per \r o X'0A' per \n (assumendo la codifica UTF-8 predefinita).

Edit: Dal momento che questa risposta è stato originariamente scritto, SQLite ha aggiunto una funzione CHAR. Ora puoi scrivere CHAR(13) per \r o CHAR(10) per \n, che funzionerà se il tuo database è codificato in UTF-8 o UTF-16.

+0

Ehi, grazie per quel dan. Spot on. – alj

+0

Per chi non è chiaro su questo ... puoi fare qualcosa come "SELECT replace (dirty_text_field, X'0A ',' \ n ') ...' per sostituire singoli \ n caratteri con l'equivalente "\ n" 2- stringhe di caratteri –

+0

@MarkCarter questa è una buona risposta, quindi perché non postare risposta invece di un semplice commento? – aculich

0

Da @ commento di MarkCarter sulla domanda di cui sopra:

SELECT replace(dirty_text_field, X'0A', '\n'); 
Problemi correlati