在SQLite中使用IN子句

时间:2015-11-18 10:41:06

标签: java android sqlite

SQLite 3.7.11Java的开发环境中,尽管已阅读以下答案:

我发现SQLite IN条款的使用不是很直截了当。

假设一个简单的表TEST具有以下结构:

----------------------------
id     PRODUCT       TAG
(int)  (text)        (text)
----------------------------
1      Cinthol       Soap, Bath, Cleaning
2      Vim           Dishwash, Kitchen, Cleaning
3      Burger        Food, Breakfast, Lunch, Dinner

以下查询的行为方式如下:

----------------------------------------------------------------------------
Query                                                  Result     Expected
----------------------------------------------------------------------------
SELECT PRODUCT FROM TEST WHERE TAG IN('Soap')          Cinthol    Cinthol
SELECT PRODUCT FROM TEST WHERE TAG IN('Dinner')        <EMPTY>    Burger
SELECT PRODUCT FROM TEST WHERE TAG IN('Soap', 'Bath')  <EMPTY>    Cinthol
SELECT PRODUCT FROM TEST WHERE TAG IN('Cleaning')      <EMPTY>    Cinthol, Vim

所以问题是:

  • 除了第一个查询之外,为什么其他人没有产生预期结果?理解中存在根本错误吗?
  • 如果错误,获得预期结果的正确查询是什么(不使用instr函数)?

此外,TAG列最终必须与Java中的标记数组绑定,从而动态构建查询。但是,上面列出的答案指出了这一点。

提前致谢!

1 个答案:

答案 0 :(得分:1)

在子句中没有这样的工作。如果每个列都有一个TAG,你可以得到结果。你需要添加另一个表来保存你的标签。在这个表中你需要pk,外键(id deom测试)和标记,这样你就可以为每个产品提供多标签。这是一个你可以做出与众不同的解决方案。你最好先搜索数据库通知..g