在sqlite android中强制转换为Integer未返回准确结果

在sqlite android中强制转换为Integer未返回准确结果,android,sql,Android,Sql,我试图在WHERE子句中使用强制转换为整数。因为我有一个列作为TEXT,我想在该列上应用=。它在SqlBrowser上运行良好(优良记录如expetedi,e12记录),但在模拟器或设备(其SqlLite数据库)上未返回准确的结果(强制转换为整数似乎不超过1000条记录)。这是我的问题 SELECT l.* FROM leads AS l WHERE cast ( l.lead_budget as INTEGER) >= 1200 AND cast ( l.lead_bud

我试图在
WHERE
子句中使用
强制转换为整数。因为我有一个列作为
TEXT
,我想在该列上应用
=
。它在
SqlBrowser
上运行良好(优良记录如expetedi,e12记录),但在模拟器或设备(其
SqlLite
数据库)上未返回准确的结果(强制转换为整数似乎不超过1000条记录)。这是我的问题

SELECT  l.* FROM leads AS l   
WHERE cast ( l.lead_budget  as INTEGER)  >=  1200
AND  cast ( l.lead_budget as INTEGER ) <=  15000
从Lead中选择l.*作为l
其中cast(l.lead_预算为整数)>=1200

和cast(l.lead\u预算为整数)这是kitkat的一个问题。我过去有过这样的问题。我在6.0上尝试了相同的cast查询,结果正如预期的那样。在6.0上试一试。 但是
sqllite
支持强制转换,并且是关于强制转换为整数等的文档。 但在进一步挖掘之后,我发现大多数kitkat使用
SQLite 3.7.11:
。这是一个链接。 我发现这是关于sqllite版本的。他们描述了他们在每个版本中修复的问题

这是他们在3.8.2中更改的内容 更改了将大于
+9223372036854775807
的浮点值转换为整数时转换表达式的定义行为,以便结果为可能的最大整数
+9223372036854775807
,而不是可能的最小整数
-9223372036854775808
。更改后,CAST(9223372036854775809.0作为INT)生成
+9223372036854775807
,而不是
-9223372036854775808
。← 可能不兼容的更改


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

您使用的是哪一个android版本?我正在试用android 4.4。它是如何“不工作”的?你有错误吗?这不是你期望的吗?@GordonLinoff请检查编辑的问题。我曾经有过这个问题。问题在于sqlite版本的kitkat。在更大版本的android上试试这个。