我有一个sqlite3数据库。其中一列主要包含整数值(正数或负数)。在少数情况下,价值是"未找到"或者"失踪"或其他文字字符串。
我想用NULL替换所有那些非整数值。列类型是原始必需品中的TEXT。
是否有一种聪明的方法可以使用UPDATE ... WHERE子句而不是粗略的东西,比如把它拉到python中来纠正?
答案 0 :(得分:3)
您可以将UPDATE
与正则表达式一起使用,如下所示:
UPDATE MyTable
SET text_column = NULL
WHERE text_column REGEXP '[^-0-9]+'
这将清除包含一个或多个非数字字符的所有字段。
答案 1 :(得分:2)
您可以更新无法将值转换为整数的所有行:
UPDATE MyTable
SET MyColumn = NULL
WHERE CAST(MyColumn AS INTEGER) != MyColumn;