개발군싹

[ORACLE DATABASE] DECODE, CASE 본문

DB

[ORACLE DATABASE] DECODE, CASE

개발자군싹 2023. 10. 23. 11:56

ORACLE DATABASE

DECODE 함수 이용하기

➡️ 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과값을 반환하는 함수

🔥 표현식 ) DECODE(표현식, 조건1, 결과1, 조건2, 결과2, ...)

 

예제

직책 코드가 J1, J2, J3, J4 에 해당하는 직원의 직책명을 DECODE를 이용하여 해당 조건에 맞는 결과값으로 출력

SELECT EMP_NAME, JOB_CODE, DECODE(JOB_CODE, 'J1','대표','J2','부사장','J3','부장','J4','과장')
FROM EMPLOYEE;

CASE WHEN THEN END

➡️ 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과값을 반환(범위의 조건 설정 가능)

🔥표현식

--    CASE
--     WHEN 조건식 THEN 출력할 값
--     WHEN 조건식 THEN 출력할 값
--     ELSE 출력할 값
--    END

예제

➡️ 위 DECODE와 같은 예제를 적용하여 위에서는 해당하지 않는 직원들의 직책명에 NULL값이 출력 되었지만 CASE 절에서 ELSE문에 해당하지 않는 직원들을 '사원'으로 표기하여 같은 예제를 작성.

SELECT EMP_NAME, JOB_CODE,
        CASE
         WHEN JOB_CODE='J1' THEN '대표'
         WHEN JOB_CODE='J2' THEN '부사장'
         WHEN JOB_CODE='J3' THEN '부장'
         WHEN JOB_CODE='J4' THEN '과장'
         ELSE '사원'
        END AS 직책명
FROM EMPLOYEE;

➡️ 직원의 급여 범위를 조건으로 하여 '고액', '중간', 'ㅠㅠ' 로 나누어 급여에 따른 결과값을 출력

SELECT E.EMP_ID, E.EMP_NAME, E.EMP_NO, E.JOB_CODE, E.DEPT_CODE, TO_CHAR(SALARY,'L999,999,999'),
    CASE
    WHEN SALARY>=4000000 THEN '고액'
    WHEN SALARY>=3000000 AND SALARY <4000000 THEN '중간'
    ELSE 'ㅠㅠ'
    END AS 결과
FROM EMPLOYEE E;

'DB' 카테고리의 다른 글

[ORACLE DATABASE] GROUP BY, HAVING  (0) 2023.10.23
[ORACLE DATABASE] 그룹함수  (1) 2023.10.23
[ORACLE DATABASE] 형 변환 함수  (2) 2023.10.23
[ORACLE DATABASE] 날짜 처리 함수  (0) 2023.10.15
[ORACLE DATABASE]함수(Function) 이용하기(2)  (0) 2023.10.15