Tóm tắt
Dùng CASE WHEN cot = 0 OR cot IS NULL THEN ... ELSE ... END để gán nhãn dựa trên nhiều điều kiện OR.
Cú pháp
SELECT cot1,
CASE WHEN cot2 = 0 OR cot2 IS NULL THEN 'Thong diep 1' ELSE 'Thong diep 2' END AS alias
FROM bang;
Ví dụ: Hệ thống đặt chỗ
1. Tạo bảng
CREATE TABLE ReservationSystems (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20),
isSeatConfirmed TINYINT
);
2. Dữ liệu
INSERT INTO ReservationSystems (Name, isSeatConfirmed) VALUES
('Larry', 0), ('Bob', 1), ('Mike', NULL), ('David', 1), ('Carol', 0), ('James', 1);
3. CASE với OR
SELECT Name,
CASE WHEN isSeatConfirmed = 0 OR isSeatConfirmed IS NULL
THEN 'YOUR SEAT IS NOT CONFIRMED'
ELSE 'YOUR SEAT IS CONFIRMED'
END AS SEATCONFIRMSTATUS
FROM ReservationSystems;
4. Kết quả
+-------+----------------------------+
| Name | SEATCONFIRMSTATUS |
+-------+----------------------------+
| Larry | YOUR SEAT IS NOT CONFIRMED |
| Bob | YOUR SEAT IS CONFIRMED |
| Mike | YOUR SEAT IS NOT CONFIRMED |
| David | YOUR SEAT IS CONFIRMED |
| Carol | YOUR SEAT IS NOT CONFIRMED |
| James | YOUR SEAT IS CONFIRMED |
+-------+----------------------------+
Lưu ý
IS NULLbắt buộc tách riêng –cot = 0 OR cot IS NULL, không viếtcot IN (0, NULL)(IN không khớp NULL).- CASE dừng ở nhánh đầu tiên TRUE – thứ tự quan trọng.
- Dùng
COALESCE(cot, 0) = 0gọn hơn: gộp NULL và 0 thành cùng một giá trị.
COALESCE thay thế
CASE WHEN COALESCE(isSeatConfirmed, 0) = 0 THEN 'NOT CONFIRMED' ELSE 'CONFIRMED' END