BackEnd/DBMS

Oracle :: NVL() vs NVL2() vs DECODE() vs NULLIF() vs COALESCE() 함수 비교

초록 (green) 2018. 1. 11. 22:46

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까지 반복