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

ค้นหาข้อมูล Case-Sensitive พร้อม Hyphen ใน MySQL

ใช้ BINARY หลัง WHERE เพื่อเปิดใช้การเปรียบเทียบ Case-Sensitive (Binary Collation)

ตัวอย่างการใช้งาน

1. สร้างตารางและข้อมูลมี EMP-1122 และ emp-1122 (ต่าง Case)

mysql> create table DemoTable (EmployeeCode varchar(100));
mysql> insert into DemoTable values('EMP-1122'), ('emp-1122'), ('EMP-6756'), ('EMP-8775');

2. Query แบบ Case-Sensitive

mysql> SELECT * FROM DemoTable WHERE BINARY EmployeeCode = 'EMP-1122';

ผลลัพธ์ (ได้แค่ EMP-1122 ตัวใหญ่)

+--------------+
| EmployeeCode |
+--------------+
| EMP-1122     |
+--------------+

วิธีอื่นๆ สำหรับ Case-Sensitive

1. ใช้ COLLATE ตรงคอลัมน์

SELECT * FROM DemoTable WHERE EmployeeCode COLLATE utf8mb4_bin = 'EMP-1122';

2. กำหนด Collation ตอนสร้างตาราง

CREATE TABLE DemoTable (
    EmployeeCode VARCHAR(100) COLLATE utf8mb4_bin
);

3. ใช้ CAST ... AS BINARY

SELECT * FROM DemoTable WHERE CAST(EmployeeCode AS BINARY) = 'EMP-1122';

Collation แบบ Binary ที่นิยม

  • utf8mb4_bin - Binary, รองรับ Unicode เต็มรูปแบบ
  • latin1_bin - Binary, Latin1 เท่านั้น
  • utf8_bin - Binary, UTF-8 (3-byte)

หมายเหตุ: Hyphen (-) ไม่มีผลต่อการเปรียบเทียบ Case-Sensitive เพราะเป็นอักขระทั่วไป