Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีเปรียบเทียบข้อความ Case-Sensitive ใน MySQL ด้วย COLLATE

ใช้ 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_ciCase-Insensitive, เร็ว (Default เก่า)
utf8mb4_unicode_ciCase-Insensitive, ตาม Unicode Standard (Default ใหม่)
utf8mb4_binBinary, Case-Sensitive, เร็วที่สุด
utf8mb4_thai_520_w2รองรับภาษาไทย UCA 5.2.0

ตั้งค่าตาราง/คอลัมน์ถาวร: ALTER TABLE DemoTable MODIFY LastName VARCHAR(100) COLLATE utf8mb4_bin;