Oracle :: NVL() vs NVL2() vs DECODE() vs NULLIF() vs COALESCE() 함수 비교
1. NVL()
NVL(param, 1) |
모든 데이터 타입에 적용 가능한 함수.
param이 NULL일 경우 1을 반환하고, 그렇지 않은 경우 (NULL이 아닌 경우) param 값을 반환한다.
2. NVL2()
NVL2(param1, param2, param3) |
param1이 NULL이 아니면 param2를 반환하고, NULL이면 param3을 반환한다.
3. DECODE()
DECODE(param, null, "1", "2") |
param이 NULL일 경우 "1"을 반환, NULL이 아닐 경우 "2"를 반환한다.
4. NULLIF()
NULLIF(param1, param2) |
param1의 값이 param2의 값과 같으면 NULL을 반환하고 같지 않으면 param1의 값을 반환하다.
(= CASE WHEN param1 = param2 THEN NULL ELSE param1 END)
5. COALESCE()
COALESCE(param1, param2, param3... paramN) |
비교하는 데이터의 타입을 모두 통일시켜야 하는 함수.
(데이터 타입이 일치하지 않을시 => ORA-00932 : 데이터 유형이 일치하지 않습니다 에러 발생함)
모든 값이 NULL일 경우 NULL을 반환한다.
param1이 NULL이 아닐 경우 param1을 반환하나, param1이 NULL일 경우 param2의 값을 체크하고
=> param2가 NULL이 아닐 경우 param2의 값을 반환하나, param2가 NULL일 경우 param3의 값을 체크
=> ....paramN까지 반복