mysql LIKE 双倍百分比
mysql LIKE with double percent
我刚刚调试遗留代码,发现其中有一个奇怪的部分。有谁知道 MYSQL 字符串中的以下内容是什么意思?
full_name LIKE '%%{fullname}%%'
正如 Mihir Dave 的评论链接中的答案一样,如果您传递 %%
而不是 %
,则 SQL 没有区别。由于单个 %
匹配零个或多个字符,因此 %%
中的每个元字符也将匹配零个或多个,最终相同的字符串将以一种或另一种方式匹配。
但我猜你的遗留代码是 Python 2.6 之前的版本,它使用 %
作为字符串格式中的元字符,你必须像 %%
一样将它加倍才能获得单个文字 %
字符。
另请参阅:
- How can I selectively escape percent (%) in Python strings?
- https://docs.python.org/2.6/library/stdtypes.html#string-formatting-operations
我怀疑这是一个遗留问题。我也在 python 3.7 中使用了 double percent,尽管我承认在较旧的 mysql 版本中,double percent 具有转义第二个 % 的唯一功能。
我是通过 Python3.8, MySQL5.7: passing active wildcards to LIKE query
来到这里的
我刚刚调试遗留代码,发现其中有一个奇怪的部分。有谁知道 MYSQL 字符串中的以下内容是什么意思?
full_name LIKE '%%{fullname}%%'
正如 Mihir Dave 的评论链接中的答案一样,如果您传递 %%
而不是 %
,则 SQL 没有区别。由于单个 %
匹配零个或多个字符,因此 %%
中的每个元字符也将匹配零个或多个,最终相同的字符串将以一种或另一种方式匹配。
但我猜你的遗留代码是 Python 2.6 之前的版本,它使用 %
作为字符串格式中的元字符,你必须像 %%
一样将它加倍才能获得单个文字 %
字符。
另请参阅:
- How can I selectively escape percent (%) in Python strings?
- https://docs.python.org/2.6/library/stdtypes.html#string-formatting-operations
我怀疑这是一个遗留问题。我也在 python 3.7 中使用了 double percent,尽管我承认在较旧的 mysql 版本中,double percent 具有转义第二个 % 的唯一功能。 我是通过 Python3.8, MySQL5.7: passing active wildcards to LIKE query
来到这里的