ฟังก์ชัน CASE ใน MySQL ทำงานคล้าย Switch Statement
CASE ใน MySQL มี 2 รูปแบบการใช้งานหลัก
รูปแบบที่ 1: เปรียบเทียบเงื่อนไข (Searched CASE)
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END AS alias_name;
รูปแบบที่ 2: เปรียบเทียบค่าของคอลัมน์ (Simple CASE)
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END;
ตัวอย่างรูปแบบที่ 1: เปรียบเทียบเงื่อนไข
SELECT CASE
WHEN 45 < 55 THEN '55 is greater than 45'
WHEN 10 != 11 THEN '10 is not equal to 11'
ELSE 'Default case'
END AS Result;
ผลลัพธ์: 55 is greater than 45 (เงื่อนไขแรกเป็นจริง จึงคืนค่านี้ทันที)
ตัวอย่างรูปแบบที่ 2: เปรียบเทียบค่าคอลัมน์
สร้างตาราง CaseDemo:
CREATE TABLE CaseDemo (
Id INT,
Name VARCHAR(100)
);
INSERT INTO CaseDemo VALUES
(1, 'John'),
(2, 'Sam');
ใช้ CASE กับคอลัมน์ Name:
SELECT CASE Name
WHEN 'John' THEN 'His name is John'
WHEN 'Sam' THEN 'His name is Sam'
ELSE -1
END AS Result
FROM CaseDemo;
ผลลัพธ์:
| Result |
|---|
| His name is John |
| His name is Sam |
สรุป: CASE จะตรวจสอบเงื่อนไข/ค่าตามลำดับ และคืนค่าของเงื่อนไขแรกที่เป็นจริง หากไม่มีเงื่อนไขไหนตรง จะคืนค่า ELSE (ถ้ามี) หรือ NULL