MySQL CASE hoạt động tương tự cấu trúc switch trong lập trình. Có 2 dạng chính:
Dạng 1: So sánh biểu thức (Searched CASE)
CASE
WHEN bieu_thuc_1 THEN ket_qua_1
WHEN bieu_thuc_2 THEN ket_qua_2
...
ELSE ket_qua_mac_dinh
END AS ten_alias;
Ví dụ:
SELECT CASE
WHEN 45 < 55 THEN '55 lớn hơn 45'
WHEN 10 != 11 THEN '10 khác 11'
ELSE 'Trường hợp mặc định'
END AS Result;
Kết quả: 55 lớn hơn 45 (điều kiện đầu tiên đúng).
Dạng 2: So sánh giá trị cột (Simple CASE)
CASE ten_cot
WHEN gia_tri_1 THEN ket_qua_1
WHEN gia_tri_2 THEN ket_qua_2
...
ELSE ket_qua_mac_dinh
END;
Ví dụ với bảng CaseDemo:
CREATE TABLE CaseDemo (Id INT, Name VARCHAR(100));
INSERT INTO CaseDemo VALUES (1,'John'), (2,'Sam');
SELECT CASE Name
WHEN 'John' THEN 'Tên của anh ấy là John'
WHEN 'Sam' THEN 'Tên của anh ấy là Sam'
ELSE -1
END AS Result
FROM CaseDemo;
Kết quả
+----------------------+ | Result | +----------------------+ | Tên của anh ấy là John | | Tên của anh ấy là Sam | +----------------------+
Ứng dụng: Phân loại dữ liệu, tạo cột tính toán, chuyển đổi giá trị trong SELECT, UPDATE, ORDER BY.