这是我用来过滤带有单列变量的行的代码,它的工作原理是:
cur.execute("SELECT * FROM Table1 WHERE item1 LIKE ?", ('%'+item_name+'%', ))
n = cur.fetchall()
但是我想从多列中过滤带有一个变量的行。 例如:表有三列,分别是项目 1、项目2 和项目3。我想从表 1 中选择 * 过滤行,其中项目1、项目2 和项目3。 如果可能,请告诉我该怎么做?
您可以将表联接到此查询:
SELECT '%' || ? || '%' AS item_name
在您想要的条件下,如下所示:
SELECT t1.*
FROM Table1 t1 INNER JOIN (SELECT '%' || ? || '%' AS item_name) t2
ON t1.item1 LIKE t2.item_name OR t1.item2 LIKE t2.item_name OR t1.item3 LIKE t2.item_name
您的代码将是:
cur.execute("SELECT t1.* FROM .....", (item_name, ))