Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL CASE với điều kiện OR

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 NULL bắt buộc tách riêng – cot = 0 OR cot IS NULL, không viết cot 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) = 0 gọ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