我试图通过LIKE运算符匹配字符串中的'%‘,但由于格式混乱,这给了我一个python TypeError
。
示例:
SELECT *
FROM table
WHERE name LIKE "%exam\%ple%"
在python中,由于对类似的通配符进行转义,查询将如下所示
match = "%%exam\\%ple%%"
query = """
SELECT *
FROM table
WHERE name LIKE "%s"
""" % (match)
然而,这仍然给我抛出了同样的错误。
如何用Python语言编写查询来搜索name
与"exam%ple"
的所有实例都匹配的table
发布于 2018-08-03 04:15:53
在生成查询时,您不需要转义%右侧的字符串中的%实例,因此:
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
结果如下:
SELECT *
FROM table
WHERE name LIKE "%exam\%ple%"
还请注意,您可以通过将%d =插入数字但%%d =插入"%d“有效地转义,即使文字为%字符,但对于您正在执行的每个%操作,您将需要加倍。
一个更好的替代方法是使用string format
命令,该命令在python 3.4+和任何Python2.7中都可用。这使用{}作为插入点的标记(它被归类为迷你语言),并且不会触及%符号。
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%"
https://stackoverflow.com/questions/51660901
复制相似问题