C# WHERE子句中的SQLite错误
有人能确认这是一个bug吗C# WHERE子句中的SQLite错误,c#,sqlite,debugging,C#,Sqlite,Debugging,有人能确认这是一个bug吗 CREATE TABLE meta meta_id INTEGER PRIMARY KEY, localAbsPathAndName TEXT, purgeGUID TEXT ); INSERT INTO meta (localAbsPathAndName) VALUES ('C:\some\path'); INSERT INTO meta (localAbsPathAndName) VALUES ('C:\some\path'); SELECT *
CREATE TABLE meta
meta_id INTEGER PRIMARY KEY,
localAbsPathAndName TEXT,
purgeGUID TEXT
);
INSERT INTO meta (localAbsPathAndName) VALUES ('C:\some\path');
INSERT INTO meta (localAbsPathAndName) VALUES ('C:\some\path');
SELECT * FROM meta WHERE purgeGUID!='aa5de571c9da5e3995b63427f5d23aad'
错误地不返回任何行。purgeGUID为null,因此Sqlite工作正常,因为
null!='aa5de571c9da5e3995b63427f5d23aad'
为空
条件“where null”从未满足您的“meta”表中有3列,但您在insert查询中只提供了一个值。请提供这3个值,然后再试一次。该条件有效“null”不等于“aa5de571c9da5e3995b63427f5d23aad”,因此它应该是真的,这肯定是原因(我同意)但是我怀疑这是sqlite nullexception中的一个错误,在引擎内部,你可以尝试一下这是任何其他类型的SQL(比如,MysQL或MS SQL),你可以看到我是right@MrHeelis例如,您误解了SQL.Read中的nullaa5de571c9da5e3995b63427f5d23aad'is false“它实际上是
null
,而不是false
@ixSci-很好,答案已更新。谢谢!只需下载“SQLite Browser”并制作表格并测试它。我向您保证,如果没有指定其他默认值,则需要30秒。SQLite具有隐式默认值(null)。