问题描述
我有一个 SQLite 数据库,它的category_codes
列可以格式化如下:
1, 45 98765, 12
545, 1, 898, 741, 78
45
87, 741
......
问题
例如,我有一个字符串545, 78
。我想选择category_codes
列包含的所有行545
和78
值。
我有一个 SQLite 数据库,它的category_codes
列可以格式化如下:
1, 45 98765, 12
545, 1, 898, 741, 78
45
87, 741
......
例如,我有一个字符串545, 78
。我想选择category_codes
列包含的所有行545
和78
值。
我们有 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 中的数据。根据您拥有的行数,这可能不是最佳选择。
并考虑一个更好的数据库模式。