2017-02-16 52 views
2

我正在使用pymssql連接到數據庫。 該數據庫有一個表中有一列(我們稱之爲col),女巫的所有字符串都是64個字符長。 (例如:"John ")。 現在我想在數據庫中找到John。我嘗試使用LIKE。 當我硬編碼的名字它完美的作品:如何在未確定數量的參數上使用LIKE和%與pymssql?

cursor.execute("SELECT * FROM table WHERE col LIKE 'John%' ") // gives perfect results 

但是,當我嘗試使用%s這似乎符合什麼。

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ",(0,"John")) // gives Nothing 
cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ",{0:"John"}) // gives SQL "Incorrect syntax" error 
cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' " % {0:"John"}) // gives unsupported format error 

,如果我想匹配的只有一列該會工作:

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ", "John") // gives all Johns 

但我想匹配列的人數不詳。 有沒有辦法看看最終的查詢是什麼樣的,所以我可以嘗試自己調試它。或者你知道如何使用許多參數。 看起來here它似乎我應該使用元組數組,但我找不到一種方法使其工作。

預先感謝您

回答

2

試試這個:

cursor.execute("SELECT * FROM table WHERE col LIKE %s ", "John%") 
0

我會用format()寫這篇文章,如果我是懶惰」

cursor.execute("SELECT * FROM table WHERE col LIKE '{0}%' ".format("John")) 

或者更正確地使用參數:

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ", ("John")) 

我認爲這個問題是(0, "John")被解釋爲兩個參數,不是一個。