MySQL CASE hoạt động giống như một câu lệnh switch. Cú pháp của CASE như sau -
Trường hợp 1 - So sánh Tuyên bố
Case when anyCompareStatement then value1 when anyCompareStatement then value2 . . N else anyValue end as anyVariableName;
Trường hợp 2 - Điều kiện
Cú pháp thứ hai có thể được sử dụng khi bạn chỉ chọn một cột. Cú pháp như sau -
case yourColumnName when condition1 then result1 when condition1 then result2 . . N else anyValue end;
Để hiểu khái niệm trên, chúng ta hãy sử dụng câu lệnh select.
Trường hợp 1
Truy vấn như sau -
mysql> 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;
Đầu ra
+-----------------------+ | Result | +-----------------------+ | 55 is greater than 45 | +-----------------------+ 1 row in set (0.00 sec)
Trường hợp 2
Hãy để chúng tôi tạo một bảng để hiểu cú pháp thứ hai.
Truy vấn để tạo bảng như sau -
mysql> create table CaseDemo -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.93 sec)
Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -
mysql> insert into CaseDemo values(1,'John'); Query OK, 1 row affected (0.43 sec) mysql> insert into CaseDemo values(2,'Sam'); Query OK, 1 row affected (0.16 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -
mysql> select *from CaseDemo;
Đầu ra
+------+------+ | Id | Name | +------+------+ | 1 | John | | 2 | Sam | +------+------+ 2 rows in set (0.00 sec)
Đây là truy vấn thứ hai của CASE có thể được sử dụng để làm việc với chỉ một giá trị. Truy vấn như sau -
mysql> select case name -> when 'John' then 'His name is John' -> when 'Sam' then 'His name is Sam' -> else -1 -> end as Result -> from CaseDemo;
Đầu ra
+------------------+ | Result | +------------------+ | His name is John | | His name is Sam | +------------------+ 2 rows in set (0.00 sec)