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