我有一个SQLite数据库,有超过40万条记录。我刚刚发现一些文本字段中有回车符,我想把它们清理掉。我想复制原始表的结构,然后执行以下操作:
INSERT INTO large_table_copy SELECT date, other_fields, replace(dirty_text_field,XXX,"") FROM large_table
其中XXX是回车的代码。不是\n。但我查不出是什么。
XXX
\n
gzjq41n41#
SQLite允许您将换行符放在字符串文字中,如下所示:
SELECT replace(dirty_text_field, ' ', '');
如果你不喜欢这种语法,你可以将字符串作为BLOB传递:X'0D'表示\r,X'0A'表示\n(假设默认的UTF-8编码)。
BLOB
X'0D'
\r
X'0A'
**编辑:**由于这个答案最初是写的,SQLite增加了一个CHAR函数。因此,现在可以为\r编写CHAR(13)或为\n编写CHAR(10),无论数据库是用UTF-8还是UTF-16编码,都可以工作。
CHAR
CHAR(13)
CHAR(10)
yjghlzjz2#
来自@MarkCarter对上述问题的评论:
SELECT replace(dirty_text_field, X'0A', '\n');
p4tfgftt3#
如果您在Windows/Linux/Mac的混合环境中操作,则执行两步转换可能是更安全的解决方案:
SELECT replace( replace( dirty_text_field, CHAR(10), "<BR>"), CHAR(13), "") FROM temp_config;
这将适用于'\n'和'\r'的大多数组合
3条答案
按热度按时间gzjq41n41#
SQLite允许您将换行符放在字符串文字中,如下所示:
如果你不喜欢这种语法,你可以将字符串作为
BLOB
传递:X'0D'
表示\r
,X'0A'
表示\n
(假设默认的UTF-8编码)。**编辑:**由于这个答案最初是写的,SQLite增加了一个
CHAR
函数。因此,现在可以为\r
编写CHAR(13)
或为\n
编写CHAR(10)
,无论数据库是用UTF-8还是UTF-16编码,都可以工作。yjghlzjz2#
来自@MarkCarter对上述问题的评论:
p4tfgftt3#
如果您在Windows/Linux/Mac的混合环境中操作,则执行两步转换可能是更安全的解决方案:
这将适用于'
\n
'和'\r
'的大多数组合