首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用LIKE和%通配符转义通过python执行的mySQL查询中的'%‘

使用LIKE和%通配符转义通过python执行的mySQL查询中的'%‘
EN

Stack Overflow用户
提问于 2018-08-03 03:29:39
回答 1查看 245关注 0票数 0

我试图通过LIKE运算符匹配字符串中的'%‘,但由于格式混乱,这给了我一个python TypeError

示例:

代码语言:javascript
复制
SELECT *
FROM table
WHERE name LIKE "%exam\%ple%"

在python中,由于对类似的通配符进行转义,查询将如下所示

代码语言:javascript
复制
match = "%%exam\\%ple%%"

query = """
SELECT *
FROM table
WHERE name LIKE "%s"
""" % (match)

然而,这仍然给我抛出了同样的错误。

如何用Python语言编写查询来搜索name"exam%ple"的所有实例都匹配的table

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 04:15:53

在生成查询时,您不需要转义%右侧的字符串中的%实例,因此:

代码语言:javascript
复制
match = r"%exam\%ple%"  # Use r string to avoid having to double \s
query = """
SELECT *
FROM table
WHERE name LIKE "%s"
""" % (match)
print(query)  # as a check

结果如下:

代码语言:javascript
复制
SELECT *
FROM table 
WHERE name LIKE "%exam\%ple%"

还请注意,您可以通过将%d =插入数字但%%d =插入"%d“有效地转义,即使文字为%字符,但对于您正在执行的每个%操作,您将需要加倍。

一个更好的替代方法是使用string format命令,该命令在python 3.4+和任何Python2.7中都可用。这使用{}作为插入点的标记(它被归类为迷你语言),并且不会触及%符号。

代码语言:javascript
复制
In [2]: "{} == {}".format(1,2)
Out[2]: '1 == 2'

In [3]: match = r"%exam\%ple%"  # Use r string to avoid having to double \s

In [4]: query = """
   ...: SELECT *
   ...: FROM table
   ...: WHERE name LIKE "{}"
   ...: """.format(match)

In [5]: print(query)

SELECT *
FROM table
WHERE name LIKE "%exam\%ple%"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51660901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档