1.IF函数
基本语法:IF(expr1,expr2,expr3)
功能:如果value为true,返回t, 否则返回f
例如:这个里面expr1里面是false,返回的是Error,如果是true,返回OK
select if(false, 'OK', 'Error');
2.IFNULL函数
基本语法:IF(value1, value2),
功能:如果value1不为空,返回value1,否则返回value2
例如:
select IFNULL('OK','Default');
//这个里面expr1字符串是OK,不为空,返回true,否则返回Default
select IFNULL('','Default')
//这个里面expr1字符串为空,返回值为空
select IFNULL(null,'Defualt');
//这个里面expr1的值为null,也就是为NULL, 返回Default
3.case函数
基本语法:case when [val1] then [res1] else [default] end
功能,如果val1为true,返回res1,.....否则返回default默认值
例如:查询表的员工姓名和工作地址(北京/上海---->, 其他 -----> 二线城市)
select
name as '姓名',
(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp;
案例:统计班级各个学员的成绩,展示的规则如下:>= 85, 展示优秀, >= 60, 展示及格,否则,展示不及格。
先创建个表结构,以这个表为例子来做案例
create table score(
id int comment 'ID',
name varchar(20) comment '姓名',
math int comment '数学',
english int comment '英语',
chinese int comment '语文'
) comment '学员成绩表';
insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95), (2, 'rose', 23, 66, 90), (3, 'Jack', 56, 98, 76);
解:
select
id,
name,
(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as '数学',
(case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) as '英语',
(case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) as '语文'
from score;
附一张黑马程序员听课截图