如何在SQLite中选择varchar列中包含\u0000(空字符)的行?

4bbkushb  于 2022-12-23  发布在  SQLite
关注(0)|答案(1)|浏览(244)

长话短说,随着时间的推移,大量虚假数据进入了SQLite数据库,其中在varchar列中的空字符之前有有效数据,然后是虚假数据。

validData\u0000bogusData

我需要清理数据集,使数据后的空字符(和空字符)消失。不幸的是,数据不适合一个模式,所以唯一的办法是寻找空字符。
我一直在尝试查询坏数据以便清理它。
我尝试过的SQL:

SELECT id FROM table WHERE field LIKE "%" || CHAR(0) || "%"

结果:返回表中的所有行。我只需要包含空字符的行。

String sql = "SELECT id FROM table WHERE field LIKE \"%\u0000%\"";

结果:SQLite在遇到空字符时停止处理SQL字符串\u0000,错误:LIKE“%”附近的SQL语法错误
任何帮助都很感激,我所能找到的只是关于获取空值行的信息。

0h4hbjxa

0h4hbjxa1#

使用INSTR()获取包含CHAR(0)的行:

SELECT * FROM tablename WHERE INSTR(field, CHAR(0));

如果你愿意的话,你可以更新表格来删除虚假的数据:

UPDATE tablename
SET field = SUBSTR(field, 1, INSTR(field, CHAR(0)) - 1)
WHERE INSTR(field, CHAR(0));

相关问题