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

ฟังก์ชัน FIELD() ใน MySQL ใช้สำหรับค้นหาว่าค่าแรก (search value) ตรงกับค่าที่อยู่ในรายการ (list of values) ลำดับที่เท่าไร โดย

  • หากพบตรงกัน จะคืนลำดับ (index) เริ่มต้นจาก 1
  • หากไม่พบเลย จะคืนค่า 0
  • หาก search value เป็น NULL จะคืนค่า 0

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

  • ใช้ในการจัดลำดับความสำคัญของค่าที่ไม่เรียงลำดับตามตัวอักษรหรือตัวเลข
  • ใช้กับ ORDER BY เพื่อเรียงข้อมูลตามลำดับที่เรากำหนดเอง
  • ช่วยให้ควบคุมการแสดงผลข้อมูลในแบบเฉพาะเจาะจง เช่น เรียงลำดับสถานะ: Pending, In Progress, Completed

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

FIELD(search_value, value1, value2, ..., valueN)
  • search_value คือค่าที่ต้องการตรวจสอบ
  • value1, value2, ..., valueN คือรายการของค่าที่ใช้เทียบ
  • ฟังก์ชันจะคืนลำดับของค่าที่ตรงกับ search_value

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

SQL
SELECT FIELD('B', 'A', 'B', 'C');       -- ผลลัพธ์: 2
SELECT FIELD('C', 'A', 'B', 'C');       -- ผลลัพธ์: 3
SELECT FIELD('Z', 'A', 'B', 'C');       -- ผลลัพธ์: 0 (ไม่พบ)

เรียงลำดับภาพยนตร์ตามระดับความเหมาะสม (rating) ด้วยลำดับที่เรากำหนดเอง

SQL
SELECT title, rating
FROM film
ORDER BY FIELD(rating, 'G', 'PG', 'PG-13', 'R', 'NC-17');
  • FIELD() จะคืนค่าลำดับของ rating ตามลำดับที่เรากำหนด
  • ใช้กับ ORDER BY เพื่อเรียงลำดับ rating ตามความเหมาะสมที่เราเลือกเอง
  • ถ้าใช้ ORDER BY rating ธรรมดา (ไม่ใช้ฟังก์ชัน FIELD()) จะเรียงตามตัวอักษร (ไม่ใช่ความสำคัญ)

ใช้ FIELD() ร่วมกับ WHERE หรือ CASE

SQL
SELECT title,
  CASE FIELD(rating, 'G', 'PG', 'PG-13')
    WHEN 1 THEN 'เหมาะกับเด็ก'
    WHEN 2 THEN 'เหมาะกับครอบครัว'
    WHEN 3 THEN 'วัยรุ่นขึ้นไป'
    ELSE 'ผู้ใหญ่'
  END AS หมวด
FROM film
LIMIT 10;
แชร์เรื่องนี้