📜  MySQL CASE表达式

📅  最后修改于: 2020-11-17 05:30:24             🧑  作者: Mango

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比较变为true时,它将返回结果。否则,它将返回else子句。

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

输出量

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

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;

输出量

返回类型

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语句。

在上表中,我们可以看到“类”列包含学生部门的简称。这就是为什么我们要用完整的表格更改部门的简称。现在,执行以下查询以执行此操作。

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列包含完整格式,而不是简短格式。