MySQL การใช้งานฟังก์ชัน LOCATE()

ฟังก์ชัน LOCATE() ใช้สำหรับค้นหาตำแหน่งแรกที่ข้อความย่อย (substring) ปรากฏในข้อความหลัก (string) คล้ายกับ INSTR() และ POSITION() แต่สามารถระบุตำแหน่งเริ่มต้นในการค้นหาได้

  • ผลลัพธ์จะเป็นตำแหน่งของอักขระตัวแรกที่พบ (เริ่มนับจาก 1)
  • หากไม่พบ จะคืนค่า 0
  • หาก substring เป็นค่าว่าง จะคืนค่า 1
  • หาก string หรือ substring เป็น NULL จะคืน NULL

ประโยชน์ของฟังก์ชัน LOCATE()

  • ใช้ตรวจสอบว่า มีคำหรือข้อความย่อยอยู่ในข้อความหลักหรือไม่
  • ใช้ร่วมกับ WHERE, CASE, หรือ SUBSTRING() เพื่อทำงานกับข้อความที่ซับซ้อน
  • มีความสามารถระบุตำแหน่งเริ่มต้น (start position) ได้ เหมาะกับกรณีที่ต้องการข้ามข้อความบางส่วน

รูปแบบการใช้งาน

LOCATE(substring, string [, start_position])
  • substring คือข้อความย่อยที่ต้องการค้นหา
  • string คือข้อความหลัก
  • start_position (ไม่บังคับ) คือตำแหน่งใน string ที่จะเริ่มต้นค้นหา (เริ่มนับจาก 1)

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

SQL
SELECT LOCATE('SQL', 'MySQL Database');       -- ผลลัพธ์: 3
SELECT LOCATE('a', 'banana');                 -- ผลลัพธ์: 2 (ตัว a แรก)
SELECT LOCATE('a', 'banana', 3);              -- ผลลัพธ์: 4 (เริ่มหาจากตัวที่ 3)
SELECT LOCATE('z', 'banana');                 -- ผลลัพธ์: 0 (ไม่พบ)

ค้นหาภาพยนตร์ที่มีคำว่า 'ACTION' อยู่ในฟิลด์ description

SQL
SELECT title, description
FROM film
WHERE LOCATE('ACTION', description) > 0
LIMIT 10;
  • ตรวจสอบว่ามีคำว่า ACTION อยู่ในฟิลด์ description หรือไม่

หาตำแหน่งคำว่า 'AMAZING' ใน description และดึงข้อความหลังจากนั้น

SQL
SELECT title,
       LOCATE('AMAZING', description) AS pos,
       SUBSTRING(description, LOCATE('AMAZING', description)) AS after_amazing
FROM film
WHERE LOCATE('AMAZING', description) > 0
LIMIT 5;
  • LOCATE() ให้ตำแหน่งของคำว่า AMAZING
  • SUBSTRING() ดึงข้อความหลังจากคำนี้
แชร์เรื่องนี้