Un BINARY
confronto
delle due stringhe è richiesta per una corrispondenza esatta
In circostanze normali, lo spazio bianco finale non viene considerato nel confronto, ma il BINARY
l'operatore lo costringe a essere:
mysql> SELECT BINARY ' ' = ' ';
+--------------------+
| BINARY ' ' = ' ' |
+--------------------+
| 0 |
+--------------------+
Per inciso, non sono solo i confronti di soli spazi bianchi a essere interessati dal problema degli spazi vuoti finali:
mysql> SELECT 'abc ' = 'abc';
+------------------+
| 'abc ' = 'abc' |
+------------------+
| 1 |
+------------------+
...ma...
mysql> SELECT BINARY 'abc ' = 'abc';
+-------------------------+
| BINARY 'abc ' = 'abc' |
+-------------------------+
| 0 |
+-------------------------+
... e ancora più confusamente, lo spazio bianco principale è significativo:
mysql> SELECT ' abc ' = 'abc';
+-------------------+
| ' abc ' = 'abc' |
+-------------------+
| 0 |
+-------------------+
Riguardo all'indicizzazione:
BINARY
impedirà l'utilizzo di un indice nella colonna dei caratteri. Tuttavia, una nota sui documenti
suggerisce che l'indice sarà essere utilizzato se il BINARY
viene applicato al lato letterale della stringa del confronto come in:
SELECT * FROM `tbl` WHERE `col` = BINARY 'string '