1

问题描述

我有一个 SQLite 数据库,它的category_codes列可以格式化如下:

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

问题

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

4

1 回答 1

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 中的数据。根据您拥有的行数,这可能不是最佳选择。

并考虑一个更好的数据库模式。

于 2013-06-13T23:57:40.933 回答