ฟังก์ชัน INSTR() (ย่อมาจาก “IN STRing”) เป็นฟังก์ชันใน MySQL ที่ใช้เพื่อค้นหาตำแหน่งแรกที่พบข้อความย่อย (substring) ภายในข้อความหลัก (string)
- ถ้า
substringเป็นค่าว่าง จะคืนค่า1 - ถ้าพบ จะคืนค่าตำแหน่งที่พบ (เริ่มนับจาก 1)
- ถ้าไม่พบ จะคืนค่า
0
ประโยชน์ของฟังก์ชัน INSTR()
- ใช้เพื่อตรวจสอบว่าข้อความย่อยมีอยู่ในข้อความหลักหรือไม่
- ใช้ในการ กรองข้อมูล, ค้นหา, หรือตรวจสอบข้อความ ภายในฟิลด์ เช่น อีเมล, ชื่อ, คำอธิบาย
- ใช้ร่วมกับ
WHERE,CASE, หรือเงื่อนไขอื่น ๆ
รูปแบบการใช้งาน
INSTR(string, substring)
stringคือข้อความหลักที่ต้องการค้นหาsubstringคือข้อความย่อยที่ต้องการค้นหาภายในข้อความหลัก- หาก
substringมีอยู่หลายจุดในข้อความINSTR()จะคืนตำแหน่งแรกที่พบเท่านั้น
ตัวอย่างการใช้งาน
ค้นหาตำแหน่งของคำว่า 'SQL' ในข้อความ
SQL
SELECT INSTR('MySQL Database', 'SQL'); -- ผลลัพธ์: 3
SELECT INSTR('Hello World', 'W'); -- ผลลัพธ์: 7
SELECT INSTR('Hello World', 'Z'); -- ผลลัพธ์: 0 (ไม่พบ)
SELECT INSTR('abcabcabc', 'b'); -- ผลลัพธ์: 2 (ตำแหน่งแรก)ดึงชื่อภาพยนตร์ที่มีคำว่า 'ACTION' อยู่ใน description
SQL
SELECT title, description
FROM film
WHERE INSTR(description, 'ACTION') > 0
LIMIT 10;INSTR()จะค้นหาว่ามีคำว่า'ACTION'อยู่ในdescriptionหรือไม่- คืนค่าเฉพาะรายการที่พบ
ใช้ร่วมกับ CASE เพื่อจัดหมวดหมู่ภาพยนตร์ที่มีคำเฉพาะใน description
SQL
SELECT title,
CASE
WHEN INSTR(description, 'EPIC') > 0 THEN 'แนวมหากาพย์'
WHEN INSTR(description, 'ROMANCE') > 0 THEN 'โรแมนติก'
ELSE 'ทั่วไป'
END AS หมวดหมู่
FROM film
LIMIT 10;หมายเหตุ
- ตำแหน่งที่คืนค่าจะเริ่มจาก
1(ไม่ใช่0) INSTR()เป็น case-sensitive ตาม collation ของ column เช่น'A'≠'a'หากใช้ collation ที่แยกตัวพิมพ์เล็กใหญ่- ถ้า
substringเป็นค่าว่าง ('') จะคืนค่า1 - หาก
stringหรือsubstringเป็นค่าNULLจะคืนค่าNULL