오라클 NVL, NVL2 함수의 예제
오라클 쿼리에서 NULL 처리는 매우매우 중요합니다.
특히나 WHERE 절에서 NULL 처리는 원하는 데이터 추출을 위해 필수조건이 되는 경우도 있습니다.
■ NVL 함수의 필요성
--예제1
SELECT *
FROM (SELECT 'ABCDEDF' AA FROM DUAL
UNION ALL
SELECT 'ZYDX' AA FROM DUAL
UNION ALL
SELECT '' AA FROM DUAL)
WHERE AA NOT LIKE 'Z%'
;
--예제1 결과
--Z 로 시작하지 않는 데이터 추출시 NULL 데이터 제외
--예제2
SELECT *
FROM (SELECT 'ABCDEDF' AA FROM DUAL
UNION ALL
SELECT 'ZYDX' AA FROM DUAL
UNION ALL
SELECT '' AA FROM DUAL)
WHERE NVL(AA,'A') NOT LIKE 'Z%'
;
--예제2 결과
--Z 로 시작하지 않는 데이터 추출시 NVL 함수를 통한 NULL 데이터 포함
NVL 함수를 통해 NULL 데이터에 대한 처리 전 후 데이터 결과의 차이
■ NVL VS NVL2
1. NVL 함수는 NVL(칼럼,지정값) 의 형태로 칼럼의 데이터가 NULL 일경우 지정값 반환
2. NVL2 함수는 NVL(칼럼,지정값1,지정값2) 의 형태로 칼럼의 데이터가 NULL 이 아닐 경우 지정값1을, NULL 일 경우 지정값2 반환
SELECT AA,
NVL(AA,'X') NVL_AA,
NVL2(AA,'O','X') NVL2_AA,
DECODE(AA,NULL,'X','O') DECODE_AA
FROM (SELECT 'TEST' AA
FROM DUAL
UNION ALL
SELECT '' AA
FROM DUAL)
;
--NVL VS NVL2 예제 결과
--NVL2 함수의 경우 DBLINK 를 통한 데이터 조회시 ORA-22992 에러가 발생할 수 있으므로 NVL2보단 DECODE 함수를 활용하는 방법을 주로 사용중입니다.
오라클 전화번호 자르기, 정규식 활용 (3) | 2016.02.22 |
---|---|
오라클 예외처리(EXCEPTION) 1편, PRAGMA EXCEPTION_INIT (0) | 2016.02.05 |
오라클 비율구하기 RATIO_TO_REPORT 예제 (0) | 2016.01.26 |
오라클 컬럼 추가, 삭제, 변경 예시 (0) | 2016.01.20 |
오라클 AS OF TIMESTAMP 예제 및 활용, 수정 전 데이터 확인 (0) | 2016.01.19 |
댓글 영역