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

ฟังก์ชัน POSITION() ใน MySQL ใช้เพื่อค้นหาตำแหน่งแรกที่ข้อความย่อย (substring) ปรากฏในข้อความหลัก (string) เป็นฟังก์ชันที่ทำงานเหมือนกับ LOCATE() และ INSTR() แต่มี Syntax ที่แตกต่างเล็กน้อย

  • หากพบข้อความ จะคืนค่าตำแหน่งเริ่มต้น (เริ่มนับจาก 1)
  • หากไม่พบ จะคืนค่า 0

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

  • ใช้เพื่อตรวจสอบว่ามีข้อความย่อยอยู่ใน string หรือไม่
  • ใช้ในงานที่ต้องการระบุตำแหน่งของคำในข้อความ เช่น ดึงข้อมูลบางส่วน
  • เหมาะกับระบบกรองข้อมูล, วิเคราะห์คำ หรือตัดข้อความแบบอิงคำหลัก

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

POSITION(substring IN string)
  • substring คือข้อความที่ต้องการค้นหา
  • string คือข้อความหลักที่ใช้ค้นหา

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

SQL
SELECT POSITION('SQL' IN 'MySQL Database');    -- ผลลัพธ์: 3
SELECT POSITION('a' IN 'banana');              -- ผลลัพธ์: 2
SELECT POSITION('z' IN 'banana');              -- ผลลัพธ์: 0
SELECT POSITION('' IN 'text');                 -- ผลลัพธ์: 1
  • POSITION() ไม่สามารถกำหนดตำแหน่งเริ่มต้นได้เหมือน LOCATE(str, str, start)

ค้นหาภาพยนตร์ที่มีคำว่า 'EPIC' ใน description

SQL
SELECT title, description
FROM film
WHERE POSITION('EPIC' IN description) > 0
LIMIT 10;
  • ค้นหาคำว่า 'EPIC' ในคำอธิบายของภาพยนตร์
  • หากพบ จะคืนค่าตำแหน่งของคำ และแสดงข้อมูลรายการนั้น

ใช้ร่วมกับ SUBSTRING() เพื่อดึงข้อความหลังคำว่า 'HISTORY'

SQL
SELECT title,
       SUBSTRING(description, POSITION('HISTORY' IN description)) AS after_history
FROM film
WHERE POSITION('HISTORY' IN description) > 0
LIMIT 5;

หมายเหตุ

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