MySQL CASE 是如何工作的?


MySQL CASE 的用法與 switch 語句類似。CASE 的語法如下:

案例 1 - 比較語句

Case
when anyCompareStatement then value1
when anyCompareStatement then value2
.
.
N
else anyValue
end as anyVariableName;

案例 2 - 條件

在您只選擇一列時,可以使用第二個語法。語法如下:

case yourColumnName
when condition1 then result1
when condition1 then result2
.
.
N
else anyValue
end;

為了理解上述概念,讓我們使用 select 語句。

案例 1

查詢如下:

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;

輸出

+-----------------------+
| Result                |
+-----------------------+
| 55 is greater than 45 |
+-----------------------+
1 row in set (0.00 sec)

案例 2

讓我們建立一個表來理解第二個語法。

建立表的查詢如下:

mysql> create table CaseDemo
   -> (
   -> Id int,
   -> Name varchar(100)
   -> );
Query OK, 0 rows affected (0.93 sec)

使用 insert 命令在表中插入一些記錄。查詢如下:

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)

使用 select 語句顯示來自該表的所有記錄。查詢如下:

mysql> select *from CaseDemo;

輸出

+------+------+
| Id   | Name |
+------+------+
|    1 | John |
|    2 | Sam  |
+------+------+
2 rows in set (0.00 sec)

以下是 CASE 的第二個查詢,可用於僅處理一個值。查詢如下:

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;

輸出

+------------------+
| Result           |
+------------------+
| His name is John |
| His name is Sam  |
+------------------+
2 rows in set (0.00 sec)

更新於:2020 年 6 月 25 日

163 次瀏覽

啟動你的職業生涯

完成課程進行認證

開始吧
廣告