程序员社区

MySQL系列教程 --- 56、MySQL 中的 CASE 表达式

MySQL CASE 表达式是控制流函数的一部分,它使我们能够为查询编写if-else 或 if-then-else逻辑。此表达式可用于任何使用有效程序或查询的地方,例如 SELECT、WHERE、ORDER BY 子句等。

CASE 表达式验证各种条件并在第一个条件为true时返回结果。一旦满足条件,它就停止遍历并给出输出。如果它找不到任何条件为真,则执行else 块。当没有找到 else 块时,它返回一个NULL值。MySQL CASE 语句的主要目标是处理 SELECT 子句中的多个 IF 语句。

我们可以通过两种方式使用 CASE 语句,如下所示:

1.简单的CASE语句:

第一种方法是取一个值并将其与给定的语句匹配,如下所示。

句法

CASE value   
    WHEN [compare_value] THEN result   
    [WHEN [compare_value] THEN result ...]   
    [ELSE result]   
END  

当第一个compare_value比较为真时,它返回结果。否则,它将返回 else 子句。

例子

mysql> SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;  

输出

成功执行上述命令后,我们将看到以下输出。

file

2.搜索CASE语句:

第二种方法是在WHEN子句中考虑一个search_condition,如果找到,则在相应的THEN子句中返回结果。否则,它将返回 else 子句。如果没有指定 else 子句,它将返回一个 NULL 值。

句法

CASE   
    WHEN [condition] THEN result   
    [WHEN [condition] THEN result ...]   
    [ELSE result]   
END  

例子

mysql> SELECT CASE BINARY 'B' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;  

输出

file

返回类型

CASE 表达式根据使用它的上下文返回结果。例如:

  • 如果在字符串上下文中使用,则返回字符串结果。
  • 如果在数字上下文中使用,则返回整数、浮点数、十进制值。

MySQL 版本支持

CASE 语句可以支持以下MySQL 版本:

  • MySQL 8.0
  • MySQL 5.7
  • MySQL 5.6
  • MySQL 5.5
  • MySQL 5.1
  • MySQL 5.0
  • MySQL 4.1
  • MySQL 4.0
  • MySQL 3.23.3

让我们创建一个表“学生”并在该表上执行 CASE 语句。

file

在上表中,我们可以看到class 列包含学生所在部门的缩写形式。这就是为什么我们要将部门的简短形式更改为完整形式。现在,执行以下查询来执行此操作。

SELECT studentid, firstname,  
 CASE class   
    WHEN 'CS' THEN 'Computer Science'   
    WHEN 'EC' THEN 'Electronics and Communication'   
    ELSE 'Electrical Engineering'   
END AS department from students;  

成功执行上述查询后,我们将得到以下输出。在这里,我们可以看到部门列包含完整表单而不是简短表单。

file

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MySQL系列教程 --- 56、MySQL 中的 CASE 表达式

一个分享Java & Python知识的社区

登录

注册