MYSQL学习笔记17: 流程控制函数(IF, CASE)

流程控制函数(IF, CASE)


if

select if(true,'ok','error');  
select if(false,'ok','error');  
/*相当于 
if true: 
    ok; 
else: 
    error; 
*/


ifnull

select ifnull('ok','default');
select ifnull('','default'); #空字符串不为null   
select ifnull(null,'default');   
/*相当于    
if 'ok' is not null:
    ok;  
else:
    default ;
*/  



case when

新建学生成绩表, 并插入数据
#创建学生成绩表
create table score(
    id int comment 'ID', 
    name varchar(20) comment '姓名', 
    math int comment '数学', 
    english int comment '英语', 
    chinese int comment '语文'
) comment '学员成绩表';
#插入数据
insert into score values (1,'tom',67,88,95), (2,'rose',23,66,90), (3,'jack',56,98,76);

统计成绩,展示规则如下
  • score>=85 优秀

  • score>=60 合格

  • score<60不合格

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;

posted @ 2024-03-09 09:21  HIK4RU44  阅读(33)  评论(0)    收藏  举报