2017-02-16 2 views
2

私はデータベースに接続するためにpymssqlを使用しています。 そのデータベースには、すべての文字列が64文字長い、魔法使いの列(colという名前)を持つテーブルがあります。 (例:"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%' ", "John") // gives all Johns 
をしかし、私は列の未定数に一致させたい:私は1つの列のみにマッチしたい場合

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 

これは働いているだろう。 最終的なクエリの外観を見て、自分でデバッグしようとする方法がありますか?そうでなければ、多くのパラメータの使い方を知っていますか? hereのように見えたら、タプルの配列を使うべきだと思われますが、それを動作させる方法を見つけることができません。

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

私は問題があると思う:

は、私が「

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

以上のパラメータを正しく使用して怠けていた場合、私は、format()を使用して、これを書くと、事前

答えて

2

試用版:

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

にありがとう(0, "John")は1つではなく2つのパラメータとして解釈されます。

関連する問題