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
반응형