MySQL中的casewhen语句和if语句

题目是要求输入学号和课程号,输出该课程分数等级。
我发现用case语句写,无论输入的学号和课程号是什么,最终都会返回else后的语句,无法根据条件进行筛选输出。而用elseif语句写就没有这个问题。

sc表中的数据

img

这是用elseif写的,结果是对的。

img

下面这是用case语句写的,结果不对。

img

这是为什么呢?初学,感到好奇怪。

语法错了呗,你的 case vGrade 实际上相当于 case false ,你这样写的话,仅当 vGrade为true时才会执行,而你的vGrade 是个数字,所以通过不了,直接走else了 要么直接 case when ..else 要么你就 case true when ..else,才能保证不走else

img

case  
when vGrade is null then set vRank='-';
when vGrade>=90then set vRank='A';
when vGrade>=80 then set vRank='B' ;
when vGrade>=70 then set vRank='C' ;
when vGrade>=60 then set vRank='D' ;
else set vRank='F';
END case;