DB/오라클(Oracle)

[Oracle] 오라클 NULL 관련 함수(NVL, NVL2, NULLIF, COALESCE)

푸코잇 2023. 11. 27. 00:10
728x90

NULL이란?

아직 정의되지 않은 값으로 0 또는 공백과 다르다. (0은 숫자, 공백은 문자)

빈 값 대신 미정 값을 부여할 때 사용한다.

PK, NOT NULL 제약조건이 있는 칼럼에는 NULL을 넣을 수 없다.

WHERE절에서는 IS NULL, IS NOT NULL을 통해 조건을 줄 수 있다.

 

-- NICKNAME이 NULL인 데이터 조회
SELECT NICKNAME FROM PLAYER WHERE NICKNAME IS NULL;

-- NICKNAME이 NULL이 아닌 데이터 조회 
SELECT NICKNAME FROM PLAYER WHERE NICKNAME IS NOT NULL;

 

NVL(표현식1, 표현식2)

표현식 1의 값이 NULL이면  표현식 2의 값을 출력하는 함수이다.

 

 

SELECT NICKNAME, NVL(NICKNAME, '닉네임 없음') FROM PLAYER;

 

ORACLE-NVL

 

NVL2(표현식1, 표현식2, 표현식3)

표현식 1이 NULL이 아니면 표현식 2, NULL이면 표현식 3의 값을 출력하는 함수이다.

 

SELECT NICKNAME, NVL2(NICKNAME, '닉네임 있음', '닉네임 없음') FROM PLAYER;

 

ORACLE-NVL2

 

NULLIF(표현식1, 표현식2)

표현식 1이 표현식 2와 같으면 NULL 출력하는 함수이다.

SELECT PLAYER_NAME, NULLIF(PLAYER_NAME, '김성환') FROM PLAYER;

ORACLE-NULLIF

 

COALESCE(표현식1, 표현식2, ...)

임의의 개수 표현식 중 NULL이 아닌 최초의 표현식을 출력하는 함수이다.

만약, 모든 표현식이 NULL이면 NULL을 출력한다.

SELECT NICKNAME, JOIN_YYYY, COALESCE(NICKNAME, JOIN_YYYY) FROM PLAYER;

ORACLE-COALESCE