MySQL CASE 表达式

MySQL CASE 表达式

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

CASE 表达式验证各种条件,并在第一个条件为 时返回结果。一旦满足条件,它停止遍历并给出输出。如果找不到任何条件为真,则执行 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

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

示例

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

输出

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

MySQL CASE 表达式

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;

输出

MySQL CASE 表达式

返回类型

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

让我们创建一个表’ students ‘并在该表上执行CASE语句。

MySQL CASE 表达式

在上述表中,我们可以看到 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;

执行上述查询成功后,我们将得到以下输出。在这里,我们可以看到 department 列中包含完整的形式,而不是缩写形式。

MySQL CASE 表达式

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程