2017-02-16 19 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")被解释为两个参数,不是一个。