0
我有一個值列表(單詞),我想檢查列表中是否有一列包含一個值(任何值)。Where字段中的多個詞LIKE
我的列表可能會很長,所以我想用一個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的? 謝謝!
你的問題是,當你刪除喜歡你的第一個項目。簡化的東西,並在你的SQL變量,把它作爲'在哪裏?'並且不要刪除像 –
這樣的第一個項目請避免以這種方式構建您的'where'子句,因爲它會使您暴露於'SQL注入'攻擊。你最好的選擇就是像'單詞'中的元素數量一樣構造許多'OR item LIKE'迭代。然後在執行時將整個'words'數組作爲sqlParameter傳入。 – Stavr00
謝謝@ Stavr00,但我不確定我是否理解你的想法。你能解釋一下嗎? – user5435739