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

วิธีค้นหาข้อความที่ตรงกันพอดี (Exact Match) ใน MySQL

การค้นหาข้อความแบบ Case-Sensitive ใน MySQL

โดยค่าเริ่มต้น MySQL จะค้นหาข้อความแบบ case-insensitive (ไม่แยกพิมพ์เล็ก/ใหญ่) หากต้องการค้นหาข้อความที่ตรงกันพอดีทุกตัวอักษร รวมถึงพิมพ์เล็ก/ใหญ่ ให้ใช้คำสำคัญ BINARY

ไวยากรณ์

SELECT * FROM yourTableName WHERE BINARY yourColumnName = 'yourStringValue';

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

สร้างตารางทดสอบ:

CREATE TABLE ExactSearch (
    Id INT NOT NULL AUTO_INCREMENT,
    UserId VARCHAR(10),
    UserName VARCHAR(20),
    PRIMARY KEY(Id)
);

เพิ่มข้อมูลทดสอบ:

INSERT INTO ExactSearch(UserId, UserName) VALUES('USER12', 'John');
INSERT INTO ExactSearch(UserId, UserName) VALUES('12USER', 'Carol');
INSERT INTO ExactSearch(UserId, UserName) VALUES('USER123', 'Bob');
INSERT INTO ExactSearch(UserId, UserName) VALUES('USER231', 'Sam');

แสดงข้อมูลทั้งหมด:

SELECT * FROM ExactSearch;

ค้นหา USER123 แบบ exact match (case-sensitive):

SELECT * FROM ExactSearch WHERE BINARY UserId = 'USER123';

ผลลัพธ์:

+----+---------+----------+
| Id | UserId  | UserName |
+----+---------+----------+
| 3  | USER123 | Bob      |
+----+---------+----------+

วิธีอื่นๆ

  • ใช้ COLLATE utf8_bin ระดับคอลัมน์: WHERE UserId COLLATE utf8_bin = 'USER123'
  • ใช้ STRCMP() ฟังก์ชัน: WHERE STRCMP(UserId, 'USER123') = 0

คำเตือน

การใช้ BINARY อาจทำให้ดัชนี (index) ไม่ทำงานได้ ให้พิจารณาใช้ collation แบบ binary ระดับคอลัมน์หรือตารางแทนหากมีการค้นหาบ่อย