오라클(ORACLE) DECODE 함수와 CASE 함수

2021. 12. 5. 12:59오라클(Oracle) 데이터 베이스


DECODE

 

 

 

기준이 되는 데이터를 먼저 지정한 후 해당 데이터 값에 따라 다른 결과 값을 내보내주는 함수

마치, 자바의 IF 조건문 같다. 

 

 

 

DECOD  검사 대상이 될 열, 또는 데이터, 연산이나 함수의 결과,
               조건1,  데이터가 조건 1과 일치할 때 반환할 결과,
               조건2, 데이터가 조건 2와 일치할 때 반환할 결과,
.......
FROM    테이블 출처;
SELECT EMPNO, ENAME, JOB, SAL,
             
              DECODE(JOB, 
              'MANAGER', SAL*1.1,
              'SALESMAN', SAL*1.05,
              'ANALYST', SAL,
              SAL*1.03) AS UPSAL

▲EMPNO, ENAME, JOB, SAL를 출력하는데 

JOB이 매니저인 사람의 SAL은 1.1 곱해서,

세일즈 맨은 1.05 곱하고,

애널리스트는 그냥,

나머지 직없은 1.03곱해서

UPSAL이란 별도의 열을 만들라는 소리. 

 

 

 

 

 



CASE함수


DECODE 함수와 마찬가지로 특정 조건에 따라 반환할 데이터를 설정할 때 사용

 

CASE   검사 대상이 될 열 또는 데이터. 연산이나 함수의 결과
             WHEN 조건1 THEN 조건 1의 결과값이 true일 때, 반환할 결과
  .... 
             ELSE 위 조건들이 모두 일치하는 경우가 없을 때 반환할 결과

 

 

 

 

 

SELECT EMPNO, ENAME, JOB, SAL,
CASE  JOB
            WHEN 'MANAGER' THEN SAL*1.1
            WHEN 'SALESMAN' THEN SAL*1.05Eㄷ
           WHEN 'ANALYST' THEN SAL
           ELSE SAL*1.03
           END AS UPSAL
FROM EMP;

▲내용은 DECODE 예시와 같음 .단지 디코드를 썼냐 케이스문을 섰냐의 차이

회계팀같은 곳에서 급여 관리할 때 유용하게 사용하겠단 생각이 스쳐간답