BINARY
比較
完全に一致させるには、2つの文字列のうちの1つが必要です
通常の状況では、末尾の空白は比較では考慮されませんが、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 '