Where 字段中的多个单词 LIKE

Multiple words in Where field LIKE

我有一个值(单词)列表,我想检查 table 中的列是否包含列表中的值(任何值)。

我的列表可能很长,所以我想使用 for 循环创建它,例如:

words = ( 'one', 'two', 'three' )
whereClause=""
a=""
for word in words:
   temp=" item LIKE '%" +word +  " %' or"
   whereClause=whereClause+temp
whereClause = whereClause[17:]  #delete first "item LIKE"
whereClause = whereClause[:-3] #delete last "or"

现在我想把它放在我的 sql 查询中:

sql= """select name
from table
where item LIKE ? """

cursor.execute(sql, whereClause)
rows=cursor.fetchall()

它不起作用,有什么建议吗?

你认为我最好使用 sql query 获取列 "name" 的所有值,然后才检查列表中的值是否存在使用Python? 谢谢!

不是很流利 Python 但这里是:

for word in words:
   whereClause += " OR" if whereClause
   whereClause += " ITEM LIKE ?"
sql= "select name from table where" + whereClause
cursor.execute(sql, words)

如果您仍然遇到问题:

words = ( 'one', 'two', 'three' )
whereClause=""

i = 1
for word in words:
    if i == 1:
        whereClause = " item LIKE '%" +word + "%'"
    else:
        whereClause += " OR item LIKE '%" +word + "%'"
    i += 1

sql= """select name
from table
where {0} """.format(whereClause)

cursor.execute(sql)
rows=cursor.fetchall()