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