En BINARY
sammenligning
af de to strenge er påkrævet for et nøjagtigt match
Under normale omstændigheder tages der ikke efter mellemrum med i sammenligningen, men BINARY
operatør tvinger det til at være:
mysql> SELECT BINARY ' ' = ' ';
+--------------------+
| BINARY ' ' = ' ' |
+--------------------+
| 0 |
+--------------------+
Det er i øvrigt ikke kun sammenligninger, der kun er hvide mellemrum, der påvirkes af det efterfølgende hvide mellemrumsproblem:
mysql> SELECT 'abc ' = 'abc';
+------------------+
| 'abc ' = 'abc' |
+------------------+
| 1 |
+------------------+
...men...
mysql> SELECT BINARY 'abc ' = 'abc';
+-------------------------+
| BINARY 'abc ' = 'abc' |
+-------------------------+
| 0 |
+-------------------------+
...og endnu mere forvirrende er det førende mellemrum er væsentlig:
mysql> SELECT ' abc ' = 'abc';
+-------------------+
| ' abc ' = 'abc' |
+-------------------+
| 0 |
+-------------------+
Angående indeksering:
BINARY
forhindrer et indeks i at blive brugt på tegnkolonnen. Dog en note om dokumenterne
foreslår, at indekset vil bruges, hvis BINARY
operator anvendes på strengens literal side af sammenligningen som i:
SELECT * FROM `tbl` WHERE `col` = BINARY 'string '