ฟังก์ชัน 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'); -- ผลลัพธ์: 1POSITION()ไม่สามารถกำหนดตำแหน่งเริ่มต้นได้เหมือน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