고래씌

[Oracle] 2-6. DML(SELECT) - 함수_단일행 함수 ⑥ (선택 함수) 본문

Database/Oracle

[Oracle] 2-6. DML(SELECT) - 함수_단일행 함수 ⑥ (선택 함수)

고래씌 2023. 11. 24. 11:51

1. DECODE

DECODE(비교대상, 조건값1, 결과값1, 조건값2, 결과값2,..., 조건값N, 결과값N, 결과값)

 

- 자바의 SWITCH문과 유사
- 비교대상에는 칼럼, 산술연산, 함수가 들어갈 수 있다.

 

EMPLOYEE 테이블

 

 

▶ 사번, 사원명, 주민번호, 주민등록번호로부터 성별을 추출해서 1이면 남자, 2면 여자 출력

 

 

▶ 직원들의 급여를 인상시켜서 조회
직급코드가 'J7'인 사원은 급여를 10%인상해서 조회
직급코드가 'J6'인 사원은 급여를 15%인상해서 조회
직급코드가 'J5'인 사원은 급여를 20%인상해서 조회
그 외 직급코드인 사원은 급여를 5%만 인상해서 조회
사원명, 직급코드, 변경전 급여, 변경후 급여

 

 

 

2. CASE WHEN THEN 구문

- DECODE 선택함수와 비교하면 DECODE는 해당 조건 검사시 동등비교만을 수행
- CASE WHEN THEN 구문의 경우 특정 조건을 내 마음대로 제시 가능

 

    [표현법]
    CASE WHEN 조건식1 THEN 결과값1
         WHEN 조건식2 THEN 결과값2
         WHEN 조건식N THEN 결과값N
         ELSE 결과값
    END
    
  ☞ 자바에서의 if~else if 문과 같은 느낌

 

 

▶ 사번 사원명, 주민등록번호, 성별자리수에 따라 남자, 여자 구분

 

 

▶ 사원명, 급여, 급여등급(SAL_LEVEL 칼럼 사용X)
SALARY 값이 500만원 초과일 경우 '고급'
           500만원 이하 350만원 초과일 경우 '중급'
           350만원 이하일 경우 '초급'

           급여등급

 CASE WHEN THEN 구문으로 작성해보기

 

 

 

직원들의 급여를 인상시켜서 조회
직급코드가 'J7'인 사원은 급여를 10%인상해서 조회
직급코드가 'J6'인 사원은 급여를 15%인상해서 조회
직급코드가 'J5'인 사원은 급여를 20%인상해서 조회
그 외 직급코드인 사원은 급여를 5%만 인상해서 조회
사원명, 직급코드, 변경전 급여, 변경후 급여

 

 

☞ JOB_CODE가 계속해서 동이랗게 나오는 경우 이렇게 계속 쓸 수 있다!