Một BINARY
so sánh
trong số hai chuỗi là bắt buộc để có kết quả khớp chính xác
Trong các trường hợp bình thường, khoảng trắng ở cuối không được xem xét trong phép so sánh mà là BINARY
toán tử buộc nó phải là:
mysql> SELECT BINARY ' ' = ' ';
+--------------------+
| BINARY ' ' = ' ' |
+--------------------+
| 0 |
+--------------------+
Ngẫu nhiên, nó không chỉ là các so sánh chỉ có khoảng trắng mà bị ảnh hưởng bởi vấn đề khoảng trắng ở cuối:
mysql> SELECT 'abc ' = 'abc';
+------------------+
| 'abc ' = 'abc' |
+------------------+
| 1 |
+------------------+
... nhưng ...
mysql> SELECT BINARY 'abc ' = 'abc';
+-------------------------+
| BINARY 'abc ' = 'abc' |
+-------------------------+
| 0 |
+-------------------------+
... và khó hiểu hơn nữa, khoảng trắng ở đầu is đáng kể:
mysql> SELECT ' abc ' = 'abc';
+-------------------+
| ' abc ' = 'abc' |
+-------------------+
| 0 |
+-------------------+
Về lập chỉ mục:
BINARY
sẽ ngăn không cho một chỉ mục được sử dụng trên cột ký tự. Tuy nhiên, ghi chú về tài liệu
gợi ý rằng chỉ mục sẽ được sử dụng nếu BINARY
toán tử được áp dụng cho bên chuỗi ký tự của phép so sánh như trong:
SELECT * FROM `tbl` WHERE `col` = BINARY 'string '