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

5m1hhzi4  于 2023-05-18  发布在  SQLite
关注(0)|答案(3)|浏览(188)

我有一个SQLite数据库,有超过40万条记录。我刚刚发现一些文本字段中有回车符,我想把它们清理掉。我想复制原始表的结构,然后执行以下操作:

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

其中XXX是回车的代码。不是\n。但我查不出是什么。

gzjq41n4

gzjq41n41#

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

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

如果你不喜欢这种语法,你可以将字符串作为BLOB传递:X'0D'表示\rX'0A'表示\n(假设默认的UTF-8编码)。

**编辑:**由于这个答案最初是写的,SQLite增加了一个CHAR函数。因此,现在可以为\r编写CHAR(13)或为\n编写CHAR(10),无论数据库是用UTF-8还是UTF-16编码,都可以工作。

yjghlzjz

yjghlzjz2#

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

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

p4tfgftt3#

如果您在Windows/Linux/Mac的混合环境中操作,则执行两步转换可能是更安全的解决方案:

SELECT replace( replace( dirty_text_field, CHAR(10), "<BR>"), CHAR(13), "") 
FROM temp_config;

这将适用于'\n'和'\r'的大多数组合

相关问题