如何使用字符串值定义查询的参数?

时间:2017-07-05 04:59:14

标签: android sqlite

下面的查询应该只返回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等。

2 个答案:

答案 0 :(得分:2)

您无法使用**s1.begin()String来比较>=值。尝试使用<=值代替int。在这种情况下,您的列string应为inventory类型。

试试这个:

int

答案 1 :(得分:0)

您可以使用BETWEEN,如下所示:

SELECT * FROM flavors WHERE inventory BETWEEN X AND Y