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;