【发布时间】:2019-09-29 12:24:12
【问题描述】:
我想在我的“事件”列中找到类似“概率:10%”或“10% 高”的内容,但是当我使用以下代码时:
conn = pymysql.connect(host="localhost", port=3306, user='myid', passwd='mypwd', db='mydb', charset='utf8')
curs = conn.cursor()
key = "%"
curs.execute(
"SELECT count(*) AS number FROM city WHERE events LIKE %s",
("%" + key + "%",)
)
它返回表中的每一行。它执行了这个查询:
SELECT count(*) AS number FROM city WHERE events LIKE '%%%'
这样,我不是故意的。
搜索反斜杠符号也给了我不正确的结果。
我应该怎么做才能得到正确的结果?
提前致谢。
【问题讨论】:
-
MySQL 使用 C 风格的转义,因此要在字符串中获取反斜杠(在它被发送到
LIKE之前),您需要两个反斜杠。试试SELECT count(*) AS number FROM city WHERE events LIKE '%\\%%' -
那么我是否需要定义一个新函数来转义该通配符?听说pymysql的execute函数转义了字符串,但是没有?
-
确实如此,但像
%一样是一个特例。 pymysql 看不到您传入的%s%s%s'中的%符号之间的区别。