我正在尝试通过LIKE运算符将字符串中带有'%'的字符串匹配,但这会给我一个python TypeError
,因为格式混乱了。
示例:
SELECT *
FROM table
WHERE name LIKE "%exam\%ple%"
在python中,由于转义了LIKE通配符,查询看起来像这样
match = "%%exam\\%ple%%"
query = """
SELECT *
FROM table
WHERE name LIKE "%s"
""" % (match)
但是,这仍然引发了我同样的错误。
我该如何在python中编写查询以搜索table
与name
的所有实例匹配的"exam%ple"
?
答案 0 :(得分:0)
在查询的生成中,您无需对%右边的字符串中的%实例进行转义,
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”,但是您需要为每个%%操作加倍表演。
一个更好的选择是使用字符串format
命令,该命令在python 3.4+和任何python 2.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%"