CASE WHEN 和 DECODE()的区别

CASE WHEN 和 DECODE()的区别:

 CASE WHEN 是一种条件判断
 
 DECODE()  是一种等值判断

代码格式:

 CASE WHEN JOB = 'PRESIDENT' THEN  '总裁级'

    CASE JOB  WHEN 'PRESIDENT' THEN  '总裁级'
      
    DECODE(JOB,'PRESIDENT','总裁级')

查出员工的工作类型,
如果是 PRESIDENT 是总裁级,
MANAGER 中层管理,
ANALYST 分析师,
SALESMAN 销售人员,
其他的岗位类型为 临时工

SELECT E.ENAME,
       E.JOB,
       DECODE(E.JOB,
              'PRESIDENT',
              '总裁级',
              'MANAGER',
              '中层管理',
              'ANALYST',
              '分析师',
              'SALESMAN',
              '销售人员',
              '临时工') 岗位类型1,
       CASE E.JOB
         WHEN 'PRESIDENT' THEN '总裁级'
         WHEN 'MANAGER'   THEN '中层管理'
         WHEN 'ANALYST'   THEN '分析师'
         WHEN 'SALESMAN'   THEN '销售人员'
         ELSE '临时工' END 岗位类型2
  FROM EMP E;

假设公司想给这些职员加工资,其标准是:
工资在3000元以下的加20%;工资在3000元或以上的加15%,

SELECT 
     E.ename ,
     E.sal,
     CASE WHEN E.sal >= 3000 THEN E.sal*1.15
          ELSE E.sal*1.2
      END 加薪后1,
     DECODE(SIGN(E.sal -3000) , -1,E.sal*1.2 ,E.sal*1.15 ) 加薪后2
FROM EMP E
ORDER BY e.sal DESC;

decode() 比较的话需要 SIGN 辅助比较才可以:

SELECT SIGN(2-1) , SIGN(3-5), SIGN(100-100) FROM DUAL;
           1 > 0      -2 < 0     0 = 0
发布了10 篇原创文章 · 获赞 1 · 访问量 311

猜你喜欢

转载自blog.csdn.net/ferlylao/article/details/104024623
今日推荐