首先建一個表:
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。