NVL 은 NULL 일 때 대신 쓸 값을, NVL2 는 NULL 여부에 따라 서로 다른 값을, NULLIF 는 두 값이 같으면 NULL 을, COALESCE 는 여럿 중 처음 만나는 NULL 아닌 값을 돌려준다.
왜 그런지까지
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일 간격으로 다시 물어봅니다