从SQLite中选择包含给定值的行

时间:2013-06-13 20:29:49

标签: java android sql sqlite android-sqlite

问题描述

我有一个SQLite数据库,其中包含category_codes列,其格式如下:

1, 45 98765, 12 
545, 1, 898, 741, 78
45
87, 741
......

问题

我有一个字符串,例如545, 78。我想选择category_codes列包含54578值的所有行。

1 个答案:

答案 0 :(得分:3)

我们有4个可能的针头位置:

  • 一开始
  • 最后
  • 中间

如果您检查其中一个条件是否为真,则会得到该行。

SELECT * 
FROM tbl 
WHERE (
   col LIKE :param1 || ",%"
   OR col LIKE "%, " || :param1
   OR col LIKE "%, " || :param1 || ",%"
   OR col = :param1
) AND (
   col LIKE :param2 || ",%"
   OR col LIKE "%, " || :param2
   OR col LIKE "%, " || :param2 || ",%"
   OR col = :param2
)

当然你必须亲自拆分。您也可以动态创建语句,具体取决于您拥有的参数数量。

另一个解决方案是创建一个sqlite函数并检查Java中的数据。根据您拥有的行数,这可能不是最佳选择。

考虑更好的数据库架构。