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

การใช้ LIKE และ OR ร่วมกันใน MySQL

การรวม LIKE กับ OR Operator

ใน MySQL คุณสามารถใช้ LIKE ร่วมกับ OR ได้ เพื่อค้นหาข้อมูลที่ตรงกับ Pattern ใด Pattern หนึ่งจากหลาย Pattern

รูปแบบคำสั่ง

กรณีที่ 1: LIKE กับ OR

SELECT * FROM your_table_name 
WHERE your_column LIKE 'pattern1%' 
   OR your_column LIKE 'pattern2%' 
   OR your_column LIKE 'pattern3%';

กรณีที่ 2: ใช้ IN Operator (สำหรับค่า Exact Match)

SELECT * FROM your_table_name 
WHERE your_column IN ('value1', 'value2', 'value3');

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

1. สร้างตาราง

CREATE TABLE LikeDemo (
    Id VARCHAR(20)
);

2. เพิ่มข้อมูล

INSERT INTO LikeDemo VALUES 
('John123'), ('Smith205'), ('Bob999'),
('Carol9091'), ('Johnson2222'), ('David2345');

3. ใช้ LIKE กับ OR (Prefix Search)

SELECT * FROM LikeDemo 
WHERE Id LIKE 'John123%' 
   OR Id LIKE 'Carol9091%' 
   OR Id LIKE 'David2345%';

4. ใช้ IN (Exact Match)

SELECT * FROM LikeDemo 
WHERE Id IN ('John123', 'Carol9091', 'David2345');

ผลลัพธ์ทั้งสองวิธี (ในกรณีนี้เหมือนกัน)

Id
John123
Carol9091
David2345

ความแตกต่างสำคัญ: LIKE vs IN

คุณสมบัติLIKE + ORIN
Pattern Matching✅ รองรับ Wildcard (%, _)❌ Exact Match เท่านั้น
Prefix Search✅ LIKE 'abc%' ใช้ Index ได้❌ ไม่ได้
Substring Search✅ LIKE '%abc%'❌ ไม่ได้
PerformancePrefix ใช้ Index ได้ใช้ Index ได้ (Equality)
ความยาวโค้ดยาวกว่าสั้นกว่า

ตัวอย่าง LIKE ที่ IN ทำไม่ได้

-- หาชื่อขึ้นต้นด้วย J, C, D
SELECT * FROM LikeDemo 
WHERE Id LIKE 'J%' OR Id LIKE 'C%' OR Id LIKE 'D%';

-- หาชื่อมี 'son' อยู่กลาง
SELECT * FROM LikeDemo 
WHERE Id LIKE '%son%';

ข้อควรระวัง

  • ⚠️ LIKE '%pattern%' (Leading Wildcard) ไม่ใช้ Index ได้ → Full Table Scan
  • 🔧 ใช้ FULLTEXT INDEX สำหรับ Full-text Search
  • 📝 IN สำหรับรายการค่าที่แน่นอน, LIKE สำหรับ Pattern
  • 🎯 REGEXP สำหรับ Pattern ซับซ้อนกว่า LIKE