Oracle 函数 decode

今天在工作中遇到一个情况,在SQl查询中使用了case when 重命名了一列数据,发现在查询条件中不能使用这个重命名后的列作为条件,使用decode作为新的方法。

decode是Oracle函数,类似于if,作为一个判断

decode(1,2,3,4)

1与2 比较,相同 则返回3,不相同,则返回4

 

有学生成绩表student,现在要实现以下几个功能:成绩大于90优秀;大于80良好;大于60及格;否则是不及格。

假设student的编号为id,成绩为score,那么:
select id, decode(sign(score-85),1,'优秀',0,'优秀',-1, 
decode(sign(score-70),1,'良好',0,'良好',-1, 
decode(sign(score-60),1,'及格',0,'及格',-1,'不及格'))) 
from student;

posted @ 2016-08-23 16:04  长不大的吕先  阅读(460)  评论(1编辑  收藏  举报