En BINARY
jämförelse
av de två strängarna krävs för en exakt matchning
Under normala omständigheter beaktas inte efterföljande blanksteg i jämförelsen, utan BINARY
operatören tvingar det att vara:
mysql> SELECT BINARY ' ' = ' ';
+--------------------+
| BINARY ' ' = ' ' |
+--------------------+
| 0 |
+--------------------+
För övrigt är det inte bara jämförelser av blanksteg som påverkas av det avslutande problemet med blanksteg:
mysql> SELECT 'abc ' = 'abc';
+------------------+
| 'abc ' = 'abc' |
+------------------+
| 1 |
+------------------+
...men...
mysql> SELECT BINARY 'abc ' = 'abc';
+-------------------------+
| BINARY 'abc ' = 'abc' |
+-------------------------+
| 0 |
+-------------------------+
...och ännu mer förvirrande, ledande blanksteg är betydande:
mysql> SELECT ' abc ' = 'abc';
+-------------------+
| ' abc ' = 'abc' |
+-------------------+
| 0 |
+-------------------+
Angående indexering:
BINARY
kommer att förhindra att ett index används i teckenkolumnen. Men en notering om dokumenten
föreslår att indexet kommer användas om BINARY
operatorn tillämpas på strängens bokstavliga sida av jämförelsen som i:
SELECT * FROM `tbl` WHERE `col` = BINARY 'string '