CASE[expr] WHEN [val1] THEN [res1] … ELSE[ default] END
如果expr的值等于val1,返回res1,… 否则返回default默认值
案例
/*
流程控制函数
IF(value ,t , f)
IFNULL(value1,value2)
CASE WHEN [val1 ] THEN [res1] ... ELSE[ default] END
CASE[expr] WHEN [val1 ] THEN [res1] ... ELSE[ default] END
*/
SELECT IF(FALSE, 'OK', 'ERROR');
SELECT IFNULL('0K', 'DEFAULT');
SELECT IFNULL('', 'DEFAULT');
SELECT IFNULL(NULL, 'DEFAULT');
-- 查询emp表的员工姓名和工作地址(北京/上海 ----> 一线城市 , 其他 ---> 二线城市)
SELECT emp_name, workaddress, ( CASE workaddress WHEN '北京' THEN '一线城市' WHEN '上海' THEN '一线城市' ELSE '二线城市' END ) AS '工作地址' FROM EMP;
-- 统计班级各个学员的成绩,展示的规则如下:
-- >= 85,展示优秀
-- >= 60,展示及格
-- 否则,展示不及格
-- 创建成绩信息表
CREATE TABLE SCORE(
id INT COMMENT 'ID',
stu_name VARCHAR(20) COMMENT '姓名',
math INT COMMENT '数学',
chinese INT COMMENT '语文',
english INT COMMENT '英语'
)COMMENT '学生成绩信息表';
INSERT INTO SCORE VALUES
(1, '小王', 90, 78, 85),
(2, '小张', 83, 92, 88),
(3, '小李', 91, 89, 83),
(4, '小陈', 93, 87, 86),
(5, '小谢', 89, 84, 87),
(6, '小常', 88, 80, 90)
SELECT * FROM SCORE;
SELECT
stu_name,
math,
(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as 'math_level',
chinese,
(case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) as 'chinese_level',
english,
(case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) as 'english_level'
from SCORE;