如何使用多列变量过滤 sqlite 表中的行数据?



这是我用来过滤带有单列变量的行的代码,它的工作原理是:

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, ))