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)
廣告