📅  最后修改于: 2020-11-17 05:30:24             🧑  作者: Mango
MySQL CASE表达式是控制流功能的一部分,该函数使我们可以向查询中编写if-else或if-then-else逻辑。此表达式可在使用有效程序或查询的任何地方使用,例如SELECT,WHERE,ORDER BY子句等。
CASE表达式验证各种条件,并在第一个条件为true时返回结果。一旦满足条件,它将停止遍历并给出输出。如果找不到任何满足条件的条件,则执行else块。当找不到else块时,它将返回NULL值。 MySQL CASE语句的主要目标是在SELECT子句中处理多个IF语句。
我们可以通过两种方式使用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;
输出量
成功执行以上命令后,我们将看到以下输出。
第二种方法是在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表达式根据使用结果的上下文返回结果。例如:
CASE语句可以支持以下MySQL版本:
让我们创建一个“学生”表并在该表上执行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列包含完整格式,而不是简短格式。