下面的查询应该只返回0到8的数字。但是,结果是0到87.并且没有显示88到99。显示的下一个数字是100到799.未显示800到999。所以我在这里看到一个模式,如果第一个数字在指定范围内,则返回。
public Cursor getList(String user) {
String zero = "0";
String query = ("SELECT * FROM flavors WHERE inventory >= "+zero+" AND inventory <= "+user);
return mDb.rawQuery(query, null);
如何使用查询参数保留预期结果?
感谢您的所有努力。
修改
对于那些正在寻找答案的人。这是最后的工作声明。 感谢@FAT,我能够从提供的链接中了解有关sql查询过程的更多信息。谷歌搜索似乎是一门艺术。我更改了我的代码以满足我的需求,如下所示。
public Cursor getList(String user) {
String zero = "0";
String query = ("SELECT * FROM flavors WHERE inventory != '' AND (cast(inventory as real)) >= " + zero + " AND (cast(inventory as real)) <= " + user);
return mDb.rawQuery(query, null);
}
&#34;演员&#34;获取用于比较两个数字的字符串是关键。我还了解到你可以排除所有空项目。通过添加&#34;!=&#39;&#39;,只有具有根据声明返回的条目的项目。这甚至适用于十进制数字,如5.5或.5等。
答案 0 :(得分:2)
您无法使用**s1.begin()
或String
来比较>=
值。尝试使用<=
值代替int
。在这种情况下,您的列string
应为inventory
类型。
试试这个:
int
答案 1 :(得分:0)
您可以使用BETWEEN
,如下所示:
SELECT * FROM flavors WHERE inventory BETWEEN X AND Y