在mysql中进行模式匹配时,%%和%之间没有区别.
我看到开发人员在尝试匹配文字%时因此而感到困惑,因此编写%%.这通常是因为format-strings经常使用double%来表示您希望将其视为精确的文字.
LIKE的MySQL文档
字符串的起源是什么,它在哪里?
如果字符串被传递给诸如sprintf的函数,则存在我之前提到的格式字符串规则,尽管在这种情况下没有混淆.
开发人员希望它是传递给mysql的字符串中的单个%,因此编写了%%.
$query = sprintf (
"SELECT ... FROM ... WHERE id <> %d AND data LIKE '%%hello world%%'",
50
);
// $query => "SELECT ... FROM ... WHERE id <> 50 AND data LIKE '%hello world%'";
一些使用LIKE运算符的SELECT示例
mysql> SELECT 'abc' LIKE 'ab%';
+------------------+
| 'abc' LIKE 'ab%' |
+------------------+
| 1 |
+------------------+
1 row in set (0.01 sec)
mysql> SELECT 'abc' LIKE 'ab%%';
+-------------