MySQL case statement in select

ในบางกรณีที่ต้องการเปลี่ยนแปลงข้อมูลในคอลัมน์ ก่อนการแสดงผล
เช่น colume ‘status’ ที่เก็บค่า ”,’Y’,’N’ ซึ่งตัวอักษรเหล่านี้ไม่สื่อความหมายที่ชัดเจนให้กับผู้ใช้งาน
ฉะนั้นจึงจำเป็นต้องมีการเปลี่ยนแปลงข้อมูลในคอลัมน์ ก่อนการแสดงผล

CASE Symtex:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] …
[ELSE statement_list] END CASE

ตัวอย่างข้อมูล ตาราง temp

temp 
รูปที่ 1 ตัวอย่างข้อมูลตาราง temp

จากตัวอย่างข้อมูลข้างต้น ถ้าต้องการเปลี่ยนแปลงข้อมูลในคอลัมน์ ‘tmp_status’ โดยมีเงื่อนไขดังต่อไปนี้

  1. สถานะ ‘Y’ เท่ากับ “ยืนยัน”
  2. สถานะ ‘N’ เท่ากับ “ไม่ยืนยัน”
  3. สถานะ ‘ ‘ เท่ากับ “รอยืนยัน”

คำสั่ง SQL ที่ใช้สำหรับกรณีนี้คือ

SELECT tmp_id, tmp_name,
   CASE tmp_status
      WHEN ‘Y’ THEN ‘ยืนยัน’
      WHEN ‘N’ THEN ‘ไม่ยืนยัน’
      WHEN ‘ ‘ THEN ‘รอยืนยัน’
   END AS tmp_status
FROM temp; 

ผลลัพย์ที่ได้คือ

tempSelectCase 
รูปที่ 2 ผลลัพย์ CASE WHEN

จะสังเกตุเห็นได้ว่าการ SELECT ข้อมูล และเปลี่ยนแปลงข้อมูลในคอลัมน์ ก่อนการแสดงผลของ CASE WHEN อยู่ในรูปแบบที่เข้าใจง่าย

และสามารถนำไปประยุกต์ใช้งานร่วมกับฟังก์ชันอื่นๆ ได้อีกมากมาย เช่น การหาผลรวม (SUM)  การนับจำนวน (COUNT) และอื่นๆ อีกมากมาย

Author : นายสิทธิชัย สมพันธุ์ (แบงค์)