ใช้ LIKE 'prefix%' เพื่อค้นหาค่าที่ขึ้นต้นด้วยข้อความที่ระบุ (Prefix Search) % คือ Wildcard แทนตัวอักษรจำนวนใดก็ได้
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> CREATE TABLE DemoTable1809 (
Name VARCHAR(20)
);
Query OK, 0 rows affected (0.00 sec)
2. เพิ่มข้อมูล
mysql> INSERT INTO DemoTable1809 VALUES('John');
mysql> INSERT INTO DemoTable1809 VALUES('David');
mysql> INSERT INTO DemoTable1809 VALUES('Mike');
mysql> INSERT INTO DemoTable1809 VALUES('Johnson');
3. แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable1809; +---------+ | Name | +---------+ | John | | David | | Mike | | Johnson | +---------+
4. ค้นหาชื่อขึ้นต้นด้วย 'Johnson'
mysql> SELECT * FROM DemoTable1809 WHERE Name LIKE 'Johnson%';
5. ผลลัพธ์
+---------+ | Name | +---------+ | Johnson | +---------+
รูปแบบ LIKE Pattern
| Pattern | ความหมาย | ตัวอย่าง Match |
|---|---|---|
'John%' | ขึ้นต้นด้วย John | John, Johnson, Johnny |
'%John' | ลงท้ายด้วย John | John, Longjohn |
'%John%' | มี John อยู่ตรงไหนก็ได้ | John, Johnson, Longjohnson |
'J_hn' | J + ตัวอักษร 1 ตัว + hn | John, Jkhn |
'J__n' | J + ตัวอักษร 2 ตัว + n | John, Jkln |
ประสิทธิภาพ (Performance)
LIKE 'prefix%': ใช้ Index ได้ (Prefix Index / Full Index)LIKE '%suffix': ไม่ใช้ Index (Full Table Scan)LIKE '%middle%': ไม่ใช้ Index (Full Table Scan)
Case Sensitivity
- Default Collation (
utf8mb4_general_ci,latin1_swedish_ci) : Case Insensitive (john = JOHN) - Binary Collation (
utf8mb4_bin) หรือBINARYkeyword : Case Sensitive - บังคับ Case Sensitive:
WHERE Name LIKE BINARY 'Johnson%'
สรุป
LIKE 'prefix%' ใช้ค้นหาค่าที่ขึ้นต้นด้วยข้อความเฉพาะ ใช้ Index ได้ เร็ว เหมาะสำหรับ Autocomplete, Search Suggest ต้องระวัง % นำหน้า (%suffix) จะช้าเพราะ Full Scan