android - 在 sqlite android 中转换为整数不返回准确结果

标签 android sql

我正在尝试使用 CAST AS INTEGERWHERE条款。因为我有一个列为 TEXT我想申请 <=>=在那个专栏上。它在 SqlBrowser 上运行良好(精细记录,如 exptectd i,e 12 条记录)但没有在模拟器或设备(它的 SqlLite 数据库)上返回准确的结果(转换为整数似乎不能处理超过 1000 条记录)。这是我的查询

SELECT  l.* FROM leads AS l   
WHERE cast ( l.lead_budget  as INTEGER)  >=  1200
AND  cast ( l.lead_budget as INTEGER ) <=  15000

我想知道我错过了什么。随便猜

最佳答案

这是 kitkat 的问题。我过去有过这样的问题。我在 6.0 上尝试了相同的转换查询,它按预期工作。在 6.0 上试试。 但是 sqllite 支持转换和 here它是关于转换为整数等的文档吗? 但经过更多挖掘后,我发现大多数 kitkat 使用 SQLite 3.7.11:Here是一个链接。 我找到了这个 page关于 sqllite 的版本。他们描述了他们在每个版本中修复的问题。

这是他们在 3.8.2 中所做的更改

当大于 +9223372036854775807 的浮点值被转换为整数时,更改了 CAST 表达式的定义行为,以便结果是可能的最大整数,+9223372036854775807 ,而不是最小可能的整数,-9223372036854775808。此更改后,CAST(9223372036854775809.0 as INT) 生成 +9223372036854775807 而不是 -9223372036854775808。 ← 可能不兼容的变化!

然后在 3.8.7 他们改进了 CAST 运算符的优化。然后我发现了这个 ticket这解释了很多真正的错误。现在它已修复,可能可以工作或使用新设备,但对于旧设备,您必须找到其他解决方案。对于这个操作系统问题,您不能依赖转换查询。因为您不确定哪个操作系统版本使用哪个 SQL 版本。希望对您有所帮助。

关于android - 在 sqlite android 中转换为整数不返回准确结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763683/

相关文章:

sql - COMMIT会做什么?

SQL - 使用条件获取多个计数

android - 同步作业之间的最佳时间是什么时候?

Android如何发布测试版App

java - 如何将 onAcitivtyResult 用于 Android 的一些 fragment

mysql - 从多列连接到一张表

mysql - 如何使用单个查询查询多个表?

sql - 如何在查询中的两个列名称之间添加 'n' 个空格?

android - onResume() 在 onCreate() > onPause() 之后连续调用两次

java - 什么时候可以在android中使用强引用并且这段代码会泄漏吗?