💾DB

[ORACLE] NVL, NVL2, NULLIF, COALESCE

이줭 2023. 6. 19. 11:20
728x90

ORACLE의 NULL 관련 다양한 함수들을 알아보자! 🙋‍♂️

NVL

NVL함수는 NULL 값을 다른 값으로 바꿀 때 사용 가능하며, 모든 데이터 타입에 적용 가능하다.

SELECT DEPT_CODE
, NVL(MGR_EMP_NO, 0) AS MGR_EMP_NO
FROM DEPT

DEPT_CODE MGR_EMP_NO
--------- ----------
110        230606011
120        0
130        220504092

NVL2

NVL2 함수는 NVL 함수와 DECODE 함수의 개념을 합쳤다고 볼 수 있다.

VNL2(EXP, EXP1, EXP2) 형식으로 사용 가능하고 EXP의 값이 NULL이 아닌 경우 EXP1 반환하고, NULL인 경우 EXP2 를 반환한다.

SELECT DEPT_CODE
, NVL2(MGR_EMP_NO, 1, 0) AS MGR_EMP_NO
FROM DEPT

DEPT_CODE MGR_EMP_NO
--------- ----------
110        1
120        0
130        1

NULLIF

NULLIF(EXP1, EXP2) 형식으로 사용 가능하고 EXP1, EXP2 값이 동일하면 NULL을 동일하지 않으면 EXP1 반환한다.

SELECT DEPT_CODE
, NULLIF(DEPT_CODE, 110) AS EXP
FROM DEPT

DEPT_CODE  EXP
--------- ----------
110        NULL
120        120
130        130

COALESCE

COALESCE(EXP1, EXP2, EXP3, ...) 형식으로 사용 가능하고 EXP1값이 NULL이 아니면 EXP1 값을 아니면 EXP2를 반환 EXP2 값이 NULL이면 EXP3를 반환하는 식으로 동작한다.

SELECT DEPT_CODE
, COALESCE(MGR_EMP_NO, 0) AS MGR_EMP_NO
FROM DEPT

DEPT_CODE MGR_EMP_NO
--------- ----------
110        230606011
120        0
130        220504092

 

 

참고 : http://www.gurubee.net/lecture/1880

728x90

'💾DB' 카테고리의 다른 글

[ORACLE] MERGE INTO  (0) 2023.07.13
[ORACLE] GROUP BY ROLLUP  (0) 2023.06.20
[ORACLE] DECODE와 CASE  (0) 2023.06.19
[ORACLE] INDEX 타지 않는 경우 (feat. INDEX HINT)  (0) 2022.09.15
[PostgreSQL] LAG, LEAD 사용하기  (0) 2022.07.08