16:43:44 SQL> select id,name,decode(sign(grade-90),1,'优秀',
16:44:21 2 decode(sign(grade-80),1,'良好',
16:44:27 3 decode(sign(grade-60),1,'及格','不及格')
16:44:32 4 )) grade from student;ID NAME GRADE
---------- ---------- ------
1 csdn1 不及格
2 csdn2 及格
3 csdn3 及格
4 csdn4 良好
5 csdn5 优秀已用时间: 00: 00: 00.47
16:44:34 SQL>
16:44:21 2 decode(sign(grade-80),1,'良好',
16:44:27 3 decode(sign(grade-60),1,'及格','不及格')
16:44:32 4 )) grade from student;ID NAME GRADE
---------- ---------- ------
1 csdn1 不及格
2 csdn2 及格
3 csdn3 及格
4 csdn4 良好
5 csdn5 优秀已用时间: 00: 00: 00.47
16:44:34 SQL>
16:47:58 2 decode(sign(grade-80),-1,'及格',
16:48:07 3 decode(sign(grade-90),-1,'良好','优秀')
16:48:17 4 )) grade from student;ID NAME GRADE
---------- ---------- ------
1 csdn1 及格
2 csdn2 及格
3 csdn3 良好
4 csdn4 优秀
5 csdn5 优秀已用时间: 00: 00: 00.31
16:48:18 SQL>
then
'及格'
else
case when cast(grade as number)>=80 and cast(grade as number)<90
then
'良好'
else
case when cast(grade as number)>=90
then
'优秀'
end
end
end
from student
要的就是sign这个函数
揭帖啰
case grade
when 80 then 'normal'
when 90 then 'excellence'
end
与decode有同样的功能
但是
case
when grade>=80 and grade<90 then 'normal'
when grade>=90 then 'excellence'
end
语句才是我想要的,两种写法,意义大相径庭