我有一个数据库,用户可以在其中搜索包含一个或多个项目列表的记录。我正在使用IN进行搜索,但我无法使用IN来处理预准备语句。这就是我尝试过的:
SELECT * FROM tbl1 WHERE col IN (?)
但是,准备好的声明将我传递的项目列表视为单个项目。我怎样才能做到这一点?
我正在使用sqlite,如果它有任何区别。
答案 0 :(得分:5)
你不能这样做,因为你不能绑定到数组。
您必须分两步完成:
无论数据库如何,都是如此。
您没有说明子SELECT是否可以成为更好的解决方案,但如果相关值在另一个表中可用,也许可以使其工作。
答案 1 :(得分:2)
您可以使用临时表和子查询:
CREATE TEMP TABLE cols (col integer primary key);
INSERT INTO cols VALUES (23);
INSERT INTO cols VALUES (25);
INSERT INTO cols VALUES (28);
SELECT * FROM tbl1 WHERE col IN (select col from cols);
DROP TABLE cols ;