0

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

我的列表可能很长,所以我想使用 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 查询获取“名称”列的所有值,然后才使用Python检查列表中的值是否存在?谢谢!

4

2 回答 2

0

如果您仍然面临问题:

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()
于 2016-05-08T13:27:38.890 回答
0

在 Python 中不是很流利,但这里有:

for word in words:
   whereClause += " OR" if whereClause
   whereClause += " ITEM LIKE ?"
sql= "select name from table where" + whereClause
cursor.execute(sql, words)
于 2016-05-03T19:01:33.107 回答