完全匹配需要比较BINARY
两个字符串
在正常情况下,比较中不考虑尾随空格,但BINARY
运算符强制它为:
BINARY 还会导致尾随空格很重要。
mysql> SELECT BINARY ' ' = ' ';
+--------------------+
| BINARY ' ' = ' ' |
+--------------------+
| 0 |
+--------------------+
顺便说一句,受尾随空格问题影响的不仅仅是空格比较:
mysql> SELECT 'abc ' = 'abc';
+------------------+
| 'abc ' = 'abc' |
+------------------+
| 1 |
+------------------+
...但...
mysql> SELECT BINARY 'abc ' = 'abc';
+-------------------------+
| BINARY 'abc ' = 'abc' |
+-------------------------+
| 0 |
+-------------------------+
...更令人困惑的是,前导空格很重要:
mysql> SELECT ' abc ' = 'abc';
+-------------------+
| ' abc ' = 'abc' |
+-------------------+
| 0 |
+-------------------+
关于索引:
BINARY
将阻止在字符列上使用索引。但是,文档上的注释表明,如果将运算符应用于比较的字符串文字端,则将使用索引,如下所示:BINARY
SELECT * FROM `tbl` WHERE `col` = BINARY 'string '