2011-01-09 26 views
7

Tôi có cơ sở dữ liệu sqlite với hơn 400 nghìn bản ghi. Tôi vừa phát hiện ra rằng một số trường văn bản có trả về vận chuyển trong đó và tôi muốn làm sạch chúng. Tôi muốn sao chép cấu trúc của bảng gốc và sau đó làm điều gì đó như:Làm thế nào để loại bỏ trả về vận chuyển trong một trường văn bản trong sqlite?

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

đâu XXX là bất cứ điều gì mã sẽ là một trở về vận chuyển. Nó không phải là \n. Nhưng tôi không thể tìm ra nó là gì.

Trả lời

17

SQLite cho phép bạn đặt ngắt dòng bên trong xâu, như thế này:

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

Nếu bạn không thích cú pháp này, bạn có thể vượt qua chuỗi như một BLOB: X'0D' cho \r hay X'0A' cho \n (giả sử mã hóa UTF-8 mặc định).

Chỉnh sửa: Vì câu trả lời này ban đầu được viết, SQLite đã thêm một hàm CHAR. Vì vậy, bây giờ bạn có thể viết CHAR(13) cho \r hoặc CHAR(10) cho \n, sẽ hoạt động cho dù cơ sở dữ liệu của bạn được mã hóa bằng UTF-8 hoặc UTF-16.

+0

Hey, cổ vũ cho rằng dan. Tại chỗ trên. – alj

+0

Đối với những người không rõ về điều này ... bạn có thể làm một cái gì đó như 'SELECT thay thế (dirty_text_field, X'0A ',' \ n ') ...' để thay thế các ký tự đơn với tương đương "\ n" 2- char strings –

+0

@MarkCarter đây là câu trả lời hay, vậy tại sao không đăng câu trả lời thay vì chỉ là nhận xét? – aculich

0

Từ @ bình luận MarkCarter về câu hỏi trên:

SELECT replace(dirty_text_field, X'0A', '\n'); 
Các vấn đề liên quan