我有一个类似的查询:
SELECT id,name,province,enabled
FROM customers
WHERE enabled = 1 AND (name LIKE "%to%" OR province LIKE "%to%");
在MAC或IPAD上使用相同的数据库会给我不同的结果。
在Mac上它按预期工作并返回11条记录,但在iPad上返回55条记录¿ (奇怪的是,他们中的一些人启用了字段= 0)真的很奇怪。
iPad应用程序在Objective C中使用Xcode6
完成我认为sqlite3在两个设备上的版本不完全相同,并且不会以相同的方式解释括号的优先级。
答案 0 :(得分:1)
我怀疑iOS版本在SQL中存在问题,可能缺少括号。例如,以下SQL可能包含enabled
不等于1的结果:
SELECT id,name,province,enabled
FROM customers
WHERE enabled = 1 AND name LIKE "%to%" OR province LIKE "%to%";
确保包括原始问题中显示的括号。
答案 1 :(得分:0)
找到它。
故事,当应用程序加载时,它会清空数据库,并从其下载的xml中填充所有数据。
之后,它会使用像这样的更新语句更新某些记录,例如“enabled”字段。
更新客户设置enabled = 1其中date(some_date_field)> date('1980-12-01');
这是问题所在:
更新客户设置enabled = 1其中some_date_field> date('1980-12-01');
stackoverflow similar problem solution
所以,在这种情况下,认为两个数据集在相同但实际上不相等的情况下是正确的,这就是为什么我看到不同的结果。
无法从ipad获取数据库(不再越狱)让我感到困惑,这个和文档目录,每次在模拟器中运行应用程序时都会发生变化并不是真的有帮助:(
感谢所有人的兴趣。