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()
我有一个值(单词)列表,我想检查 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()