Sử dụng từ khóa BINARY để buộc REGEXP so khớp chuỗi như một chuỗi nhị phân (phân biệt chữ hoa/thường). Chúng ta sẽ thấy sự khác biệt ở ví dụ dưới đây.
Tạo bảng demo
mysql> create table DemoTable (
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.46 sec)
Chèn dữ liệu với các trường hợp chữ hoa/thường khác nhau
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('JOHN');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('john');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('JOhn');
Query OK, 1 row affected (0.17 sec)
Hiển thị tất cả bản ghi
mysql> select * from DemoTable;
Kết quả
+------+ | Name | +------+ | John | | JOHN | | john | | JOhn | +------+ 4 rows in set (0.00 sec)
So sánh REGEXP thường và REGEXP BINARY
mysql> select Name REGEXP 'JOHN' AS KetQuaKhongBinary,
Name REGEXP BINARY 'JOHN' AS KetQuaCoBinary
from DemoTable;
Kết quả
+---------------------+------------------+ | KetQuaKhongBinary | KetQuaCoBinary | +---------------------+------------------+ | 1 | 0 | | 1 | 1 | | 1 | 0 | | 1 | 0 | +---------------------+------------------+ 4 rows in set (0.04 sec)
Giải thích:
- Không dùng BINARY: REGEXP mặc định không phân biệt chữ hoa/thường, nên tất cả 4 hàng đều khớp (trả về 1).
- Có BINARY: Chỉ hàng có chính xác 'JOHN' (viết hoa toàn bộ) mới khớp (trả về 1).
Khi nào dùng BINARY: Khi cần tìm kiếm chính xác về mặt chữ hoa/thường, ví dụ: mã sản phẩm, mật khẩu, mã code phân biệt hoa/thường.