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

ค้นหาข้อความที่ตรงกันเป๊ะ (Exact Match) ในคอลัมน์ MySQL ด้วย BINARY LIKE

การค้นหาข้อความแบบ 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-Sensitive
  • LIKE '%JOHN%' : ค้นหาสตริงที่มี 'JOHN' อยู่ตรงกลาง (Wildcard % หมายถึงตัวอักษรใดๆ จำนวนเท่าไรก็ได้)
  • ไม่พบ 'John' เพราะ 'J' ตัวใหญ่ 'o','h','n' ตัวเล็ก ไม่ตรงกับ 'JOHN' ทั้งหมดตัวใหญ่
  • วิธีนี้ใช้ได้กับ CHAR, VARCHAR, TEXT