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 次浏览

启动你的职业生涯

完成课程进行认证

开始吧
广告