2011-01-09 19 views
7

Tengo una base de datos sqlite con más de 400k registros. Acabo de descubrir que algunos de los campos de texto tienen retornos de carro en ellos y quería eliminarlos. Quería copiar la estructura de la tabla original y luego hacer algo como:¿Cómo eliminar los retornos de carro en un campo de texto en sqlite?

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

Dónde XXX es lo que el código sería para un retorno de carro. No es \n. Pero no puedo descubrir qué es.

Respuesta

17

SQLite le permite poner saltos de línea dentro de los literales de cadena, así:

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

Si no te gusta esta sintaxis, se puede pasar la cadena como un BLOB: X'0D' para \r o X'0A' para \n (asumiendo la codificación UTF-8 por defecto).

Editar: Dado que esta respuesta fue escrita originalmente, SQLite ha agregado la función CHAR. De modo que ahora puede escribir CHAR(13) para \r o CHAR(10) para \n, lo cual funcionará ya sea que su base de datos esté codificada en UTF-8 o UTF-16.

+0

Hey, aplausos para que Dan. Spot on. – alj

+0

Para cualquiera que no tenga claro esto ... puede hacer algo como 'SELECT replace (dirty_text_field, X'0A ',' \ n ') ...' para reemplazar single \ n chars con el equivalente "\ n" 2- cadenas de caracteres –

+0

@MarkCarter esta es una buena respuesta, ¿por qué no publicarla en lugar de solo como un comentario? – aculich

0

De @ comentario de MarkCarter en la pregunta anterior:

SELECT replace(dirty_text_field, X'0A', '\n'); 
Cuestiones relacionadas