如何在sqlite的文本字段中删除回车?

alj*_*alj 11 sqlite carriage-return

我有一个超过400k记录的sqlite数据库.我刚刚发现一些文本字段中有回车符,我想清除它们.我想复制原始表的结构,然后执行以下操作:

INSERT INTO large_table_copy 
SELECT date, other_fields, replace(dirty_text_field,XXX,"") 
FROM large_table
Run Code Online (Sandbox Code Playgroud)

XXX回车的代码在哪里.事实并非如此\n.但我不知道它是什么.

dan*_*n04 22

SQLite允许您在字符串文字中放置换行符,如下所示:

SELECT replace(dirty_text_field, '
', '');
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢这种语法,可以将字符串作为BLOB:X'0D'for \r或X'0A'for 传递\n(假设使用默认的UTF-8编码).

编辑:由于这个答案最初编写,SQLite添加了一个CHAR函数.所以你现在可以写CHAR(13)for \r或CHAR(10)for \n,无论你的数据库是用UTF-8还是UTF-16编码都可以.

  • 对于不清楚这一点的任何人......你可以做一些类似`SELECT replace(dirty_text_field, X'0A', '\n')...` 用等效的 "\n" 2-char 替换单个 \n 字符字符串 (2认同)

acu*_*ich 7

来自@MarkCarter 对上述问题的评论:

SELECT replace(dirty_text_field, X'0A', '\n');
Run Code Online (Sandbox Code Playgroud)