SQL 기본 및 활용
🗄️ SQLSQL 기본★★★★★거의 매회

NULL 을 다루는 함수 — NVL·NVL2·NULLIF·COALESCE

NVL 은 NULL 일 때 대신 쓸 값을, NVL2 는 NULL 여부에 따라 서로 다른 값을, NULLIF 는 두 값이 같으면 NULL 을, COALESCE 는 여럿 중 처음 만나는 NULL 아닌 값을 돌려준다.

NVLNVL2NULLIFCOALESCE

왜 그런지까지

NVL(a, b) 는 a 가 NULL 이면 b 를 준다. NVL2(a, b, c) 는 a 가 NULL 이 아니면 b, NULL 이면 c 를 주므로 인자 순서가 NVL 과 반대로 느껴져 헷갈린다.

NULLIF(a, b) 는 두 값이 같을 때 NULL 을 주고 다르면 a 를 준다 — 특정 값을 집계에서 빼고 싶을 때 쓴다. COALESCE(a, b, c, …) 는 왼쪽부터 훑어 처음 만나는 NULL 아닌 값을 준다. 넷 다 인자의 자료형이 서로 맞아야 한다.

네 함수

함수돌려주는 값
NVL(a, b)a 가 NULL 이면 b, 아니면 a
NVL2(a, b, c)a 가 NULL 이 아니면 b, NULL 이면 c
NULLIF(a, b)a 와 b 가 같으면 NULL, 다르면 a
COALESCE(a, b, …)왼쪽부터 처음 만나는 NULL 아닌 값

돌려 보기

보너스가 NULL 인 사람에게 0을 채워 넣고, 급여가 정확히 600인 사람만 NULL 로 만들어 본다.

헷갈리는 것

NVL vs NVL2

NVL(a, b) 는 a 가 NULL 일 때만 b 를 준다. NVL2(a, b, c) 는 a 가 NULL 이 아니면 b, NULL 이면 c 를 준다.

NULLIF vs COALESCE

NULLIF 는 두 값이 같을 때 NULL 을 만들어 내고, COALESCE 는 여럿 중 처음 만나는 NULL 아닌 값을 골라 낸다.

확인 문제

넣어 두면 오늘 · 1일 · 3일 · 7일 · 14일 · 30일 간격으로 다시 물어봅니다