【发布时间】:2018-06-14 17:50:42
【问题描述】:
我刚刚调试了一段遗留代码,我发现其中有一个奇怪的部分。有没有人有想法,MYSQL字符串中的以下含义是什么?
full_name LIKE '%%{fullname}%%'
【问题讨论】:
-
你能显示更多这段代码的上下文吗?
我刚刚调试了一段遗留代码,我发现其中有一个奇怪的部分。有没有人有想法,MYSQL字符串中的以下含义是什么?
full_name LIKE '%%{fullname}%%'
【问题讨论】:
正如 Mihir Dave 的评论链接所指向的答案,如果您传递 %% 而不是 %,则 SQL 没有区别。由于单个% 匹配零个或多个字符,因此%% 中的每个元字符也将匹配零个或多个,最终相同的字符串将以一种或另一种方式匹配。
但我猜你的旧代码是 Python 2.6 之前的代码,它使用 % 作为字符串格式中的元字符,你必须像 %% 一样将它加倍以获得单个文字 % 字符。
另见:
【讨论】:
%{fullname}% 作为标记来替换某些内容,然后两边多余的% 字符是实际的SQL 通配符?
我怀疑这是一个遗留问题。我在 python 3.7 中也使用了 double percent,尽管在较旧的 mysql 版本上,double percent 具有转义第二个 % 的唯一功能。 我是通过Python3.8, MySQL5.7: passing active wildcards to LIKE query
【讨论】: