ใช้คีย์เวิร์ด BINARY เพื่อบังคับให้ REGEXP จับคู่สตริงเป็นสตริงแบบไบนารี (case-sensitive) มาดูความแตกต่างกันครับ
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.46 sec)
เพิ่มข้อมูลตัวอย่าง (ชื่อที่มีตัวพิมพ์เล็ก-ใหญ่ต่างกัน)
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)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์
+------+ | Name | +------+ | John | | JOHN | | john | | JOhn | +------+ 4 rows in set (0.00 sec)
คำสั่งเปรียบเทียบ REGEXP ธรรมดา กับ REGEXP BINARY
mysql> select Name REGEXP 'JOHN' AS ResultWithoutBinary,
Name REGEXP BINARY 'JOHN' AS ResultWithBinary
from DemoTable;
ผลลัพธ์
+---------------------+------------------+ | ResultWithoutBinary | ResultWithBinary | +---------------------+------------------+ | 1 | 0 | | 1 | 1 | | 1 | 0 | | 1 | 0 | +---------------------+------------------+ 4 rows in set (0.04 sec)
สรุป: REGEXP ธรรมดาไม่สนใจตัวพิมพ์เล็ก-ใหญ่ (case-insensitive) จับคู่ได้ทุกแถว แต่ REGEXP BINARY จับคู่เฉพาะ 'JOHN' ที่เป็นตัวพิมพ์ใหญ่ทั้งหมดเท่านั้น