Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách so sánh chuỗi cho một khoảng trắng

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   '


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách bật nhật ký truy vấn chậm trong MySQL

  2. Cách khôi phục cơ sở dữ liệu MySQL từ các tệp vật lý

  3. Chọn 3 điểm cao nhất mỗi ngày cho mỗi người dùng

  4. Làm thế nào để tạo các trường động được chọn từ một bảng trong mysql?

  5. Các trận chiến mã hóa ký tự UTF-8 json_encode ()