ฟังก์ชัน 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;