目次
1. ภาพรวมของ MySQL LIKE
ตัวดำเนินการLIKE
ของ MySQL ใช้เพื่อค้นหาข้อมูลที่ตรงกับรูปแบบ (Pattern) ที่กำหนดไว้ในฐานข้อมูล LIKE
ถูกใช้ร่วมกับคำสั่ง WHERE
ของ SQL และสามารถตั้งเงื่อนไขการค้นหาตามบางส่วนหรือทั้งหมดของสตริงได้ ตัวอย่างเช่น “ชื่อที่ขึ้นต้นด้วยอักษรใดอักษรหนึ่ง” หรือ “รหัสสินค้าที่มีอักขระเฉพาะอยู่ภายใน” ซึ่งช่วยให้ค้นหาได้สะดวกขึ้นการใช้งานของ LIKE
- การค้นหาตรงบางส่วน
- การค้นหาตามรูปแบบที่กำหนด
- การกรองข้อมูล
2. โครงสร้างพื้นฐานของ MySQL LIKE
โครงสร้างพื้นฐานเมื่อใช้ตัวดำเนินการLIKE
ใน MySQL มีดังนี้:SELECT คอลัมน์ FROM ชื่อตาราง WHERE คอลัมน์ LIKE 'แพทเทิร์น';
ตัวอย่างการใช้งาน LIKE
- ค้นหาข้อมูลที่ขึ้นต้นด้วยอักษรเฉพาะ
SELECT * FROM users WHERE name LIKE 'A%';
- ค้นหาข้อมูลที่มีสตริงเฉพาะอยู่ภายใน
SELECT * FROM products WHERE product_code LIKE '%123%';
LIKE
มักใช้ร่วมกับ Wildcard อย่าง %
และ _
เพื่อการค้นหาที่มีความยืดหยุ่นมากขึ้น3. Wildcard ที่ใช้กับ LIKE
ในการใช้LIKE
จะมีการใช้ Wildcard เพื่อกำหนดรูปแบบการค้นหา โดย MySQL รองรับ Wildcard หลัก 2 แบบดังนี้%
Wildcard
- ตรงกับสตริงใดๆ (ตั้งแต่ 0 ตัวอักษรขึ้นไป)
SELECT * FROM users WHERE email LIKE '%@example.com';
ตัวอย่างนี้จะแสดงอีเมลทั้งหมดที่ลงท้ายด้วย@example.com
_
Wildcard
- ตรงกับอักขระเพียง 1 ตัว
SELECT * FROM products WHERE product_code LIKE '_A%';
ตัวอย่างนี้จะแสดงรหัสสินค้าที่อักขระตัวที่สองคือA
4. เทคนิคการจับคู่รูปแบบ
การใช้LIKE
ร่วมกับ Wildcard สามารถทำ Pattern Matching ได้หลากหลายการค้นหาที่ขึ้นต้นด้วย (Starts With)
- ค้นหาข้อมูลที่ขึ้นต้นด้วยรูปแบบเฉพาะ
SELECT * FROM customers WHERE name LIKE 'John%';
จะแสดงชื่อลูกค้าที่ขึ้นต้นด้วยJohn
การค้นหาที่ลงท้ายด้วย (Ends With)
- ค้นหาข้อมูลที่ลงท้ายด้วยรูปแบบเฉพาะ
SELECT * FROM files WHERE filename LIKE '%.pdf';
จะแสดงชื่อไฟล์ทั้งหมดที่ลงท้ายด้วย.pdf
การค้นหาที่มีบางส่วน (Contains)
- ค้นหาข้อมูลที่มีรูปแบบเฉพาะอยู่ภายใน
SELECT * FROM documents WHERE content LIKE '%MySQL%';
จะแสดงเอกสารทั้งหมดที่มีคำว่าMySQL
5. การ Escape อักขระพิเศษใน LIKE
ในLIKE
ตัวอักษร %
และ _
จะมีความหมายพิเศษเป็น Wildcard หากต้องการค้นหาเป็นตัวอักษรจริง ต้องใช้ Escape Characterวิธีการ Escape
- ตัวอย่างการค้นหาด้วย Escape Character
SELECT * FROM filenames WHERE filename LIKE 'file_%' ESCAPE '';
ในคำสั่งนี้จะค้นหาชื่อไฟล์ที่ขึ้นต้นด้วยfile_
โดยอักขระ_
ถูกทำให้เป็นตัวอักษรธรรมดาด้วย Escape Character
6. การใช้ LIKE ขั้นสูง
ตัวดำเนินการLIKE
สามารถใช้ร่วมกับ SQL อื่นๆ เพื่อการค้นหาที่ซับซ้อนขึ้นใช้ร่วมกับ JOIN
- ค้นหาข้อมูลที่เชื่อมโยงระหว่างตาราง
SELECT orders.id, customers.name FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.name LIKE '%Smith%';
จะแสดงคำสั่งซื้อของลูกค้าที่มีชื่อรวมคำว่าSmith
การใช้ NOT LIKE
- ค้นหาข้อมูลที่ไม่ตรงกับรูปแบบ
SELECT * FROM emails WHERE address NOT LIKE '%@spam.com';
จะแสดงอีเมลที่ไม่ได้ลงท้ายด้วย@spam.com

7. แนวทางปฏิบัติที่ดีที่สุดในการใช้ LIKE
การใช้LIKE
มีข้อควรระวังและแนวทางปฏิบัติที่ควรพิจารณาผลกระทบต่อประสิทธิภาพ
- หากใช้
LIKE
กับข้อมูลจำนวนมาก อาจทำให้ประสิทธิภาพลดลง โดยเฉพาะการใช้%
นำหน้า ทำให้ไม่สามารถใช้ Index ได้ ส่งผลให้ Query ทำงานช้า
การใช้อินเด็กซ์อย่างเหมาะสม
- เพื่อเพิ่มประสิทธิภาพ ควรพิจารณาสร้าง Index ตามความจำเป็น
8. การใช้งาน MySQL LIKE ที่พบบ่อย
ตัวดำเนินการLIKE
มักใช้ในสถานการณ์ต่อไปนี้การค้นหาลูกค้า
- ค้นหาตามชื่อลูกค้าหรืออีเมล
การค้นหารหัสสินค้า
- ค้นหาตามบางส่วนของรหัสสินค้า
9. สรุป
ตัวดำเนินการLIKE
เป็นเครื่องมือที่ทรงพลังในการทำ Pattern Matching บน MySQL บทความนี้ได้อธิบายตั้งแต่โครงสร้างพื้นฐาน การใช้งานขั้นสูง ไปจนถึงการปรับปรุงประสิทธิภาพ ควรใช้ LIKE
อย่างเหมาะสมเพื่อการค้นหาและจัดการฐานข้อมูลอย่างมีประสิทธิภาพ10. คำถามที่พบบ่อย
Q1: ความแตกต่างระหว่างLIKE
และ =
คืออะไร? A1: =
ใช้สำหรับการค้นหาที่ตรงกันทั้งหมด ส่วน LIKE
ใช้สำหรับการค้นหาบางส่วนหรือ Pattern Matching Q2: LIKE
แยกตัวพิมพ์เล็ก-ใหญ่หรือไม่? A2: ตามค่าเริ่มต้นของ MySQL LIKE
ไม่แยกตัวพิมพ์เล็ก-ใหญ่ แต่สามารถใช้คีย์เวิร์ด BINARY
เพื่อบังคับให้แยกได้ Q3: สามารถใช้ LIKE
กับตัวเลขได้หรือไม่? A3: โดยทั่วไปใช้กับสตริง แต่หากตัวเลขถูกเก็บในฐานข้อมูลเป็นสตริง ก็สามารถใช้ได้เช่นกัน