Reputation: 3039
I have an sqlite database with over 400k records. I have just found that some of the text fields have carriage returns in them and I wanted to clean them out. I wanted to copy the structure of the original table and then do something like:
INSERT INTO large_table_copy
SELECT date, other_fields, replace(dirty_text_field,XXX,"")
FROM large_table
Where XXX
is whatever the code would be for a carriage return. It's not \n
. But I can't find out what it is.
Upvotes: 18
Views: 21417
Reputation: 163
If you operate in a mixed environment with Windows/Linux/Mac it might be a safer solution to do a two step convertion:
SELECT replace( replace( dirty_text_field, CHAR(10), "<BR>"), CHAR(13), "")
FROM temp_config;
This will work with most combinations of '\n
' and '\r
'
Upvotes: 3
Reputation: 14865
From @MarkCarter's comment on the question above:
SELECT replace(dirty_text_field, X'0A', '\n');
Upvotes: 9
Reputation: 91207
SQLite lets you put line breaks inside string literals, like this:
SELECT replace(dirty_text_field, '
', '');
If you don't like this syntax, you can pass the string as a BLOB
: X'0D'
for \r
or X'0A'
for \n
(assuming the default UTF-8 encoding).
Edit: Since this answer was originally written, SQLite has added a CHAR
function. So you can now write CHAR(13)
for \r
or CHAR(10)
for \n
, which will work whether your database is encoded in UTF-8 or UTF-16.
Upvotes: 36