MySQL CASE 表达式是控制流功能的一部分,它允许我们向查询写入 if-else 或 if-then-else 逻辑。该表达式可以在任何使用有效过程或查询的地方使用,例如 SELECT、WHERE、ORDER BY 子句等。
CASE 表达式验证各种条件,并在第一个条件为真时返回结果。一旦满足条件,它就会停止遍历并给出输出。如果没有找到满足条件的条件,则执行else块。当else块没有找到时,它返回NULL值。 MySQL CASE 语句的主要目标是处理 SELECT 子句中的多个 IF 语句。
我们可以通过两种方式使用 CASE 语句,如下所示:
第一种方法是获取一个值并将其与给定的语句进行匹配,如下所示。
CASE值
WHEN [compare_value] THEN 结果
[当[比较值] 那么结果...]
[其他结果]
END
当第一次compare_value比较为true时,就会返回结果。否则,它返回 else 子句。
mysql> SELECT CASE 1 WHEN 1 THEN '一' WHEN 2 THEN '二' ELSE '更多' END;
输出
成功执行上述命令后,我们将看到以下输出。
第二种方法是考虑 WHEN 子句中的 search_condition,如果找到,则在相应的 THEN 子句中返回结果。否则,它返回 else 子句。如果未指定 else 子句,则返回 NULL 值。
案例
WHEN [条件] THEN 结果
[当[条件]那么结果...][其他结果]
END
mysql> 选择大小写二进制 'B' WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
输出
CASE 表达式根据使用它们的上下文返回结果。例如:
CASE语句可以支持以下MySQL版本:
让我们创建一个“Student”表并在该表上执行 CASE 语句。
在上表中,我们可以看到“班级”一栏包含了学生院系的缩写。这就是为什么我们要使用完整的表格来更改部门的简称。现在,执行以下查询来执行此操作。
选择学生ID,名字,
案例类
当“CS”那么“计算机科学”
当“EC”时,那么“电子和通信”
其他“电气工程”
ENDAS系学生;
成功执行上述查询后,我们将得到以下输出。在这里我们可以看到 Department 列包含完整格式而不是短格式。