ใช้ตัวดำเนินการ LIKE กับ wildcard % เพื่อค้นหาสตริงที่ขึ้นต้นด้วยคำนำหน้าที่กำหนด
ไวยากรณ์
SELECT * FROM yourTableName WHERE yourColumnName LIKE 'yourPrefixValue%';
สร้างตารางตัวอย่าง
mysql> CREATE TABLE findStringWithGivenPrefixDemo (
-> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserMessage TEXT
-> );
เพิ่มข้อมูลตัวอย่าง
mysql> INSERT INTO findStringWithGivenPrefixDemo(UserMessage) VALUES
('Hi Good Morning !!!'),
('Hey I am busy!!'),
('Hello what are you doing!!!'),
('Hi I am learning MongoDB!!!');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM findStringWithGivenPrefixDemo;
ผลลัพธ์:
+--------+-----------------------------+ | UserId | UserMessage | +--------+-----------------------------+ | 1 | Hi Good Morning !!! | | 2 | Hey I am busy!! | | 3 | Hello what are you doing!!! | | 4 | Hi I am learning MongoDB!!! | +--------+-----------------------------+
ค้นหาข้อความขึ้นต้นด้วย "Hi"
mysql> SELECT * FROM findStringWithGivenPrefixDemo WHERE UserMessage LIKE 'Hi%';
ผลลัพธ์ (2 แถว):
+--------+-----------------------------+ | UserId | UserMessage | +--------+-----------------------------+ | 1 | Hi Good Morning !!! | | 4 | Hi I am learning MongoDB!!! | +--------+-----------------------------+
Wildcard ใน LIKE
| Wildcard | ความหมาย | ตัวอย่าง |
|---|---|---|
| % | ตัวอักษรจำนวนใดก็ได้ (รวม 0 ตัว) | 'Hi%' = Hi, Hi there, Hi123 |
| _ | ตัวอักษรเพียง 1 ตัว | 'H_' = Ha, Hi, H1 (ไม่ใช่ Hi there) |
รูปแบบค้นหาที่พบบ่อย
LIKE 'prefix%'- เริ่มต้นด้วย prefix (ใช้ index ได้)LIKE '%suffix'- ลงท้ายด้วย suffix (ไม่ใช้ index)LIKE '%middle%'- มีคำ middle อยู่กลาง (ไม่ใช้ index)LIKE '_attern'- ตัวแรกอะไรก็ได้ ตามด้วย attern
Case Sensitivity
- Default collation (utf8mb4_general_ci): Case-insensitive → 'Hi%' ตรงกับ 'hi', 'HI', 'Hi'
- Binary collation (utf8mb4_bin): Case-sensitive → 'Hi%' ตรงกับ 'Hi' เท่านั้น
- บังคับ case-sensitive:
WHERE column LIKE BINARY 'Hi%'
ประสิทธิภาพ
LIKE 'prefix%'ใช้ index ได้ (Range scan)LIKE '%suffix'และLIKE '%middle%'ต้อง Full table scan- พิจารณา Full-text search สำหรับข้อความยาว/ค้นหาบ่อย