การค้นหาข้อความแบบ Case-Sensitive ด้วย BINARY และ LIKE
คอลัมน์ใน MySQL โดยปกติเป็น Case-Insensitive (ไม่แยกเล็กใหญ่) หากต้องการค้นหาข้อความที่ตรงกันเป๊ะรวมถึงตัวพิมพ์เล็ก/ใหญ่ ให้ใช้คีย์เวิร์ด BINARY ก่อนชื่อคอลัมน์ในเงื่อนไข LIKE
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (Name VARCHAR(20));
Query OK, 0 rows affected (1.93 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
mysql> INSERT INTO DemoTable VALUES('John');
mysql> INSERT INTO DemoTable VALUES('Adam');
mysql> INSERT INTO DemoTable VALUES('JOHN');
mysql> INSERT INTO DemoTable VALUES('ADAM');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+-------+
| Name |
+-------+
| Chris |
| John |
| Adam |
| JOHN |
| ADAM |
+-------+
5 rows in set (0.00 sec)
คำสั่งค้นหา 'JOHN' แบบ Case-Sensitive
mysql> SELECT * FROM DemoTable WHERE BINARY Name LIKE '%JOHN%';
ผลลัพธ์:
+------+
| Name |
+------+
| JOHN |
+------+
1 row in set (0.09 sec)
คำอธิบาย
BINARY Name: บังคับให้เปรียบเทียบแบบ Binary (Byte-by-byte) → Case-SensitiveLIKE '%JOHN%': ค้นหาสตริงที่มี 'JOHN' อยู่ตรงกลาง (Wildcard % หมายถึงตัวอักษรใดๆ จำนวนเท่าไรก็ได้)- ไม่พบ 'John' เพราะ 'J' ตัวใหญ่ 'o','h','n' ตัวเล็ก ไม่ตรงกับ 'JOHN' ทั้งหมดตัวใหญ่
- วิธีนี้ใช้ได้กับ CHAR, VARCHAR, TEXT