728x90
이번 포스팅에서 드디어 단일 행 함수에서 다루지 않았던 기타 함수들을 알아볼 예정입니다.
다루지 않았던 함수 중 NVL과 DECODE가 대표적으로 있는데 NVL부터 알아보겠습니다.
1. NVL
NVL(컬럼, 해당 컬럼의 NULL값을 변환할 값)
- NVL은 NULL값을 다른 값으로 변환해 주는 함수입니다.
- NULL이 아닌 경우는 해당 컬럼의 값을 반환합니다.
- NULL을 변환한 값은 해당 컬럼의 데이터 타입과 동일한 타입이어야 합니다.
SELECT ENAME, COMM, NVL(COMM, 0) FROM EMP;
2. DECODE
DECODE(컬럼 or 문자열, 비교값, 같을 떄 반환값[, 비교값, 반환값...][, 다를 때 기본값])
switch와 비슷합니다.
SELECT ENAME, JOB, DECODE(JOB, 'MANAGER', '0') FROM EMP;
해당 명령은 JOB컬럼에서 MANAGER 값을 가진 값들을 0으로 변환시켜줍니다.
--Q) JOB이 MANAGER라면 0 JOB이 SALESMAN이면 1 둘다 아니면 2를 출력하자.
SELECT JOB, DECODE(JOB, 'MANAGER', '0', 'SALESMAN', '1', 2) FROM EMP;
3. CASE [WHEN ... THEN ...] END
CASE WHEN 비교값(조건) THEN 같을 떄(참일 때) 반환값
[WHEN.... THEN ...] [ELSE 다를 떄 기본 값] END
- 해당 함수는 if문과 비슷합니다.
- ELSE 기본값을 지정하지 않으면, 일치하지 않거나 조건을 만족시키지 않을 때 NULL 값을 반환할 수 있습니다.
SELECT ENAME, SAL, CASE WHEN SAL <= 1000 THEN '초급'
WHEN SAL <= 2000 THEN '중급' ELSE '고급' END
FROM EMP;
4. COALESCE
NVM 함수의 기능이 조더 확장된 함수라고 생볼수 있다.
NULL이 아닌 첫번째 값을 반환한다.
SELECT COALESCE('AB', NULL, 'BC') FROM DUAL;
SELECT COALESCE(NULL, 'AB', 'BC') FROM DUAL;
SELECT COALESCE(NULL, 'AB', NULL, 'BC') FROM DUAL;
SELECT COALESCE(NULL, NULL, 'BC', 'AC') FROM DUAL;
728x90
'RDB > Oracle' 카테고리의 다른 글
[ORACLE] UNION, UNION ALL, INTERSECT, MINUS (0) | 2021.12.31 |
---|---|
[ORACLE] 집계함수 - COUNT, MAX, MIN, SUM, AVG (1) | 2021.12.30 |
[ORACLE] 타입 변환 함수(TO_CHAR, TO_DATE, TO_NUMBER) (0) | 2021.12.28 |
[ORACLE] 날짜함수(ADD_MONTHS, MONTHS_BETWEEN, SYSDATE) (0) | 2021.12.27 |
[ORACLE] 자리수 반올림, 올림, 버림(ROUND, TRUNC, CEIL, FLOOR) (0) | 2021.12.26 |