[爆卦]sql like用法是什麼?優點缺點精華區懶人包

為什麼這篇sql like用法鄉民發文收入到精華區:因為在sql like用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者sandwichC (沒回應=掛站)看板Python標題[問題] MySQLdb使用like敘述...


在Python中使用MySQLdb library來access mysql database時
為了避免 sql string中的變數含有引號,通常會用下面的方式
cursor.execute ("""
SELECT * FROM table WHERE name = %s
""", %(var))
若變數var中含有引號,仍然能被正常的執行

我的疑問是:如果今天改用like子句,如:
"""SELECT * FROM table WHERE name LIKE "%%s%" """, %(var)

第一個和第三個%符號希望當作like的萬用字元
但python會把它們解釋成第一個例子中%的用法

我知道可以直接用string.replace去掉引號,
但總覺得應該有辦法可以讓字串sql-safe的
類似像 cursor.execute(ToSqlSafeStr(sql_str)) 這樣子的用法
或者像第一個例子的用法

這是個相當常見的需求,Python上應該也早就有標準的解法了吧
但我在Google上找了找卻都只找到部份正確的解法 :(

不知道各位有沒有什麼好的建議呢?謝謝

--
My blog: http://sandwichc-life.blogspot.com/

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 68.232.127.230
cobrasgo:試試escape 10/01 12:27
carrlyea:試試將 "%%s%" 改為 "%%%s%%" 10/01 14:58
hsinlongg:我是用var = "%" + var + "%" 帶入進去~! 12/02 14:53
hsinlongg:=> (SELECT * FROM table WHERE name LIKE "%s")% var 12/02 14:55

你可能也想看看

搜尋相關網站