首先建一个表:

create table grades(
stu_id int(20) not null,
stu_name varchar(20),
class_id int(20),
grade int(10)
);

查入数据:

insert into table grades(stu_id,stu_name,class_id,grade)
values
(11,'czy',201,91),
(17,'czs',201,91), (
12,'cz1',201,81), (13,'cza',201,71), (14,'czd',201,61), (15,'czk',201,51), (16,'czl',201,NULL);

使用case when排序:

select stu_name,
case 
    when grade > 90 then '优秀'
    when grade >80 then '中等上'
    when grade >70 then '中等下'
    when grade >=60 then '及格'
    when grade < 60 then '不及格'
else '没有成绩' 
end as
'rank' from grades

结果显示:

最后的‘czl’显示的是else后面的定义,如果没有else语句则结果是:

此处的NULL并不是表中'czl'的成绩NULL,而是当没有else结尾时,case when语句进行判断时,如果条件都不满足,默认返回NULL。

posted on 2019-10-18 15:55  zerotone  阅读(8592)  评论(0)    收藏  举报