ใช้ COLLATE utf8mb4_bin สำหรับการเปรียบเทียบ Case-Sensitive
MySQL ค่าเริ่มต้นใช้ Collation แบบ Case-Insensitive (เช่น utf8mb4_general_ci) ทำให้ 'Brown' = 'BROWN' = 'brown' ใช้ COLLATE utf8mb4_bin เพื่อเปรียบเทียบแบบ Binary (Case-Sensitive)
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (LastName VARCHAR(100));
INSERT INTO DemoTable VALUES ('Brown'), ('BROWN'), ('brown'), ('BRoWN');
ข้อมูลในตาราง
+----------+ | LastName | +----------+ | Brown | | BROWN | | brown | | BRoWN | +----------+
คำสั่งค้นหา 'BROWN' แบบ Case-Sensitive
SELECT * FROM DemoTable WHERE LastName LIKE 'BROWN' COLLATE utf8mb4_bin;
ผลลัพธ์: ได้เฉพาะ 'BROWN' เท่านั้น
+----------+ | LastName | +----------+ | BROWN | +----------+
คำอธิบาย:
COLLATE utf8mb4_binกำหนด Collation แบบ Binary เฉพาะการเปรียบเทียบนี้- เปรียบเทียบระดับ Byte ต่อ Byte → 'B' != 'b'
- ใช้ได้กับ
=,LIKE,ORDER BY,GROUP BY,DISTINCT
Collation อื่นๆ ที่น่ารู้:
| Collation | ลักษณะ |
|---|---|
| utf8mb4_general_ci | Case-Insensitive, เร็ว (Default เก่า) |
| utf8mb4_unicode_ci | Case-Insensitive, ตาม Unicode Standard (Default ใหม่) |
| utf8mb4_bin | Binary, Case-Sensitive, เร็วที่สุด |
| utf8mb4_thai_520_w2 | รองรับภาษาไทย UCA 5.2.0 |
ตั้งค่าตาราง/คอลัมน์ถาวร: ALTER TABLE DemoTable MODIFY LastName VARCHAR(100) COLLATE utf8mb4_bin;