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
让我们创建一个表"
students"并在该表上执行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;
成功执行以上查询后,我们将获得以下输出。在这里,我们可以看到
部门列包含完整格式,而不是简短格式。