Ios 奇怪的SQLite行为。不同的结果;同样的问题

Ios 奇怪的SQLite行为。不同的结果;同样的问题,ios,objective-c,sqlite,Ios,Objective C,Sqlite,我有一个类似这样的问题: 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应用程序使用Xcode6在目标C中完成 我认为两台

我有一个类似这样的问题:

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应用程序使用Xcode6在目标C中完成


我认为两台设备上的sqlite3版本不完全相同,对括号优先级的解释也不相同。

我怀疑iOS格式副本在SQL中有问题,可能缺少括号。例如,以下SQL可能包括
已启用
不等于1的结果:

SELECT id,name,province,enabled 
FROM customers 
WHERE enabled = 1 AND name LIKE "%to%" OR  province LIKE "%to%";
确保包括原问题中所示的括号。

找到了

故事是这样的:当应用程序加载时,它清空数据库,并从下载的xml中填充所有数据

在这之后,它会用这样的更新语句更新一些记录,如“enabled”字段

启用更新客户集=1,其中日期(某些日期字段)>日期('1980-12-01')

问题应该是:

更新已启用的客户集=1,其中某些日期字段>日期('1980-12-01')

所以,在这个场景中,我们正确地认为两个相同但实际上并不相等的数据库,这就是为什么我看到了不同的结果

无法从ipad上获取db(不再越狱)让我感到困惑,每次在模拟器中运行应用程序时都会更改此目录和文档目录,这也没有什么帮助:(


感谢大家的关注。

我强烈怀疑您的代码在两个版本之间存在实际差异。您所描述的是不可能的。请展示执行查询的代码。SQLite从一个平台到下一个平台都非常稳定和可预测,远远好于iOS、Windows等发现行为上的实际差异是很不寻常的。我知道。SQL有括号,事实上,我测试了它,从XCode日志中复制查询。这就是为什么这么奇怪,相同的查询在不同的设备上使用相同的db得到不同的结果。@MiQUEL Yep,我听到了。但我认为肯定有一些微妙的差异逃避您的分析。但是如果没有代码示例,我们无法帮助您。如果没有可复制的问题示例,我们无法帮助您。尝试创建尽可能小的复制问题的示例。但是我敢打赌,iOS SQLite引擎中括号的优先级几乎肯定不是问题。虽然我相信您会觉得“我们已经控制了所有其他可能的变量,这里肯定还有其他因素。很高兴您找到了它!仅供参考,您仍然可以通过Xcode从设备下载文档文件夹:在Xcode“窗口”菜单中,选择“设备”;然后选择您的设备和应用程序;然后单击“齿轮”图标,您可以下载“容器”到你的Mac。