添加基于条件的列选择条目后的Android Sqlite
因此,当我试图将已删除的条目标记为“deleted”值为“1”而不是删除它时,就发生了这种情况 我在我的应用程序中使用添加基于条件的列选择条目后的Android Sqlite,android,sql,sqlite,null,alter-table,Android,Sql,Sqlite,Null,Alter Table,因此,当我试图将已删除的条目标记为“deleted”值为“1”而不是删除它时,就发生了这种情况 我在我的应用程序中使用altertable“+TABLE_NAME+“addcolumn”+NEW_column_NAME+“”+type+”向数据库添加了一列;”;并在数据库提供程序中进行了其他适当的更改(插入0时),但是,发生了一些奇怪的事情 添加后,会发生以下情况: SELECT*FROM TABLE_NAME-返回所有行(如预期) SELECT*FROM TABLE_NAME,其中NEW_CO
altertable“+TABLE_NAME+“addcolumn”+NEW_column_NAME+“”+type+”向数据库添加了一列;”;
并在数据库提供程序中进行了其他适当的更改(插入0时),但是,发生了一些奇怪的事情
添加后,会发生以下情况:
SELECT*FROM TABLE_NAME
-返回所有行(如预期)SELECT*FROM TABLE_NAME,其中NEW_COLUMN_NAME=1
返回NEW_COLUMN_NAME=1的行(如预期)。
但是,SELECT*FROM TABLE_NAME,其中NEW_COLUMN_NAME=0
返回新插入的行(如预期)SELECT*FROM TABLE\u NAME,其中NEW\u COLUMN\u NAME!=1
仅返回新插入的行(而不是旧行)SELECT*FROM TABLE\u NAME,其中NEW\u COLUMN\u NAME=null
不返回任何内容SELECT * FROM TABLE_NAME WHERE NEW_COLUMN_NAME = null
将在几乎任何数据库中返回空行集,因为在SQL中,表达式NULL=x
对于所有x
(即使x
为NULL)都是false。请尝试以下操作:
SELECT * FROM TABLE_NAME WHERE NEW_COLUMN_NAME IS NULL
类似的空值问题将适用于此问题:
SELECT * FROM TABLE_NAME WHERE NEW_COLUMN_NAME != 1
因此,请尝试:
SELECT * FROM TABLE_NAME WHERE NEW_COLUMN_NAME != 1 OR NEW_COLUMN_NAME IS NULL
相反
这不是特定于SQLite或Android的,这只是正常的SQL行为。如果您不一定需要在列中允许空值,请使用NOT NULL
(可能是默认值)创建它们,以避免一些混乱和挫折