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

ฟังก์ชัน 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
แชร์เรื่องนี้