달나라 노트

Redshift : nvl, nvl2, coalesce (여러 값 중 null이 아닌 값 추출하기) 본문

SQL/Redshift

Redshift : nvl, nvl2, coalesce (여러 값 중 null이 아닌 값 추출하기)

CosmosProject 2020. 12. 17. 02:15
728x90
반응형

 

 

 

nvl(value1, value2)

coalesce(value1, value2, value3, ...)

nvl과 coalesce는 모두 첫 번째 value가 null일 때 그 다음 value를 반환합니다.

 

nvl의 경우 value1이 null이면 value2를 반환합니다.

 

coalesce의 경우

1. value1이 null이면 value2를 반환합니다.

2. value2도 null이면(=value1과 value2 모두 null이면) value 3를 반환합니다.

3. value3도 null이면(=value1, value2, value3 모두 null이면) value 4를 반환합니다.

...

 

nvl과 coalesce는 기능이 비슷하지만 nvl은 2개의 인자만 넣을 수 있는 반면 coalesce는 여러 개의 인자를 넣을 수 있다는 차이가 있습니다.

 

select nvl(null, 10);
-> 결과 : 10


select coalesce(null, 'abc');
-> 결과 : abc


select coalesce(null, null, 123);
-> 결과 : 123

 

 

 

 

 

nvl2(value1, value2, value3)

nvl2라는 function도 있습니다.

 

nvl2는 위처럼 3개의 parameter를 받으며

value1이 null이 아니라면 value2를 return하고,

value1이 null이라면 value3를 return합니다.

 

 

select  nvl2(null, 'a', 'b')
        , nvl2('apple', 'a', 'b')
;



-- Result
b
a

 

 

 

 

 

 

728x90
반응형
Comments