เมื่อต้องการค้นหาแถวที่ตรงกับ **หลายรูปแบบข้อความ** ในคอลัมน์เดียวกัน ให้ใช้ LIKE ร่วมกับ OR
รูปแบบคำสั่ง
SELECT * FROM yourTableName
WHERE yourColumnName LIKE '%pattern1%'
OR yourColumnName LIKE '%pattern2%'
OR yourColumnName LIKE '%pattern3%' ...;
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล Hobby
mysql> CREATE TABLE LikeDemo (Hobby VARCHAR(200));
Query OK, 0 rows affected (1.71 sec)
mysql> INSERT INTO LikeDemo VALUES
-> ('Reading Book'),
-> ('Playing Cricket Match'),
-> ('Playing Hockey Match'),
-> ('Reading Novel'),
-> ('Swimming');
2. ดูข้อมูลทั้งหมด
mysql> SELECT * FROM LikeDemo;
+-----------------------+
| Hobby |
+-----------------------+
| Reading Book |
| Playing Cricket Match |
| Playing Hockey Match |
| Reading Novel |
| Swimming |
+-----------------------+
5 rows in set (0.00 sec)
3. ค้นหาที่มี "Cricket" หรือ "Reading"
mysql> SELECT * FROM LikeDemo
-> WHERE Hobby LIKE '%Cricket%' OR Hobby LIKE '%Reading%';
+-----------------------+
| Hobby |
+-----------------------+
| Reading Book |
| Playing Cricket Match |
| Reading Novel |
+-----------------------+
3 rows in set (0.00 sec)
วิธีอื่นที่มีประสิทธิภาพมากกว่า
REGEXP (Regular Expression)
SELECT * FROM LikeDemo
WHERE Hobby REGEXP 'Cricket|Reading';
กระชับกว่า และอ่านง่ายกว่าเมื่อเงื่อนเยอะ
FULLTEXT SEARCH (สำหรับข้อความยาว/จำนวนมาก)
ALTER TABLE LikeDemo ADD FULLTEXT(Hobby);
SELECT * FROM LikeDemo
WHERE MATCH(Hobby) AGAINST('+Cricket +Reading' IN BOOLEAN MODE);
เร็วมากสำหรับตารางใหญ่ แต่ต้อง MyISAM หรือ InnoDB 5.6+
เคล็ดลับการใช้ LIKE
%pattern%- ค้นหาทุกตำแหน่ง (ไม่ใช้ Index ได้ → Slow)pattern%- ค้นหาเริ่มต้น (ใช้ Index ได้ → Fast)%pattern- ค้นหาสิ้นสุด (ไม่ใช้ Index)- หลีกเลี่ยง Leading Wildcard (
%...) ใน Production ตารางใหญ่
ตัวอย่าง: ค้นหาเฉพาะคำขึ้นต้น
-- หางานอดิเรกขึ้นต้นด้วย 'Reading'
SELECT * FROM LikeDemo WHERE Hobby LIKE 'Reading%';
+-----------------+
| Hobby |
+-----------------+
| Reading Book |
| Reading Novel |
+-----------------+
2 rows in set (0.00 sec)
สรุปการเลือก
| สถานการณ์ | แนะนำ |
|---|---|
| เงื่อนไขน้อย (< 5), ตารางเล็ก | LIKE ... OR LIKE ... |
| เงื่อนไขเยอะ, Pattern ซับซ้อน | REGEXP |
| ตารางใหญ่ (>100k rows), ค้นหาข้อความเต็ม | FULLTEXT INDEX |
| ค้นหาคำนำหน้า (Prefix) | LIKE 'prefix%' (ใช้ Index) |