Как удалить возврат каретки в текстовом поле в sqlite? - PullRequest
10 голосов
/ 10 января 2011

У меня есть база данных sqlite с более чем 400 тыс. Записей. Я только что обнаружил, что в некоторых текстовых полях есть возврат каретки, и я хотел их убрать Я хотел скопировать структуру исходной таблицы, а затем сделать что-то вроде:

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

Где XXX - это тот код, который был бы для возврата каретки. Это не \n. Но я не могу узнать, что это.

Ответы [ 2 ]

21 голосов
/ 10 января 2011

SQLite позволяет помещать разрывы строк внутри строковых литералов, например:

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

Если вам не нравится этот синтаксис, вы можете передать строку как BLOB: X'0D' для \r или X'0A' для \n (при условии кодировки UTF-8 по умолчанию).

Редактировать: Поскольку этот ответ был изначально написан, SQLite добавил функцию CHAR.Теперь вы можете написать CHAR(13) для \r или CHAR(10) для \n, что будет работать независимо от того, закодирована ли ваша база данных в UTF-8 или UTF-16.

2 голосов
/ 03 декабря 2017

Из комментария @ MarkCarter к вопросу выше:

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