고래씌
[Oracle] 2-6. DML(SELECT) - 함수_단일행 함수 ⑥ (선택 함수) 본문
1. DECODE
DECODE(비교대상, 조건값1, 결과값1, 조건값2, 결과값2,..., 조건값N, 결과값N, 결과값)
- 자바의 SWITCH문과 유사함
- 비교대상에는 칼럼, 산술연산, 함수가 들어갈 수 있다.
▶ 사번, 사원명, 주민번호, 주민등록번호로부터 성별을 추출해서 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가 계속해서 동이랗게 나오는 경우 이렇게 계속 쓸 수 있다!
'Database > Oracle' 카테고리의 다른 글
[Oracle] 3. DML(SELECT) - GROUP BY & HAVING, 집합연산자 (0) | 2023.11.24 |
---|---|
[Oracle] 2-7. DML(SELECT) - 함수 (그룹 함수) (0) | 2023.11.24 |
[Oracle] 2-5. DML(SELECT) - 함수_단일행 함수 ⑤ (NULL 처리 함수) (0) | 2023.11.24 |
[Oracle] 2-4. DML(SELECT) - 함수_단일행 함수 ④ (형변환 함수) (0) | 2023.11.24 |
[Oracle] 2-3. DML(SELECT) - 함수_단일행 함수 ③ (날짜 관련한 함수) (1) | 2023.11.24 |