일단


ifnull 과 coalesce 는 둘다 지정한 값이 널이면 다른 값으로 변환해주는 함수.

mssql로 치면 isnull(val,'') 로 보면 되겠다.


차이점은 사용법에 있다.


ifnull(val, '')

 : 항목은 두 개 뿐으로, 하나가 null이면 다른 값을 출력한다. 순서는 상관없다.

coalesce(val1, val2, val3, val4...)

 : 항목은 여러 개 가능하고, 처음으로 만나는 null이 아닌 값을 출력한다.




단, 이 함수들은 에러를 리턴할 수 있다.


ex.

select isnull(null, null);
-> results in an error

select isnull(null, cast(null as varchar));
-> returns null

select coalesce(null, null, null, null, null);
-> results in an error

select coalesce(null, null, null, null, 'first non-null value');
-> returns 'first non-null value'



덧. 위 에러 예제들에 보면 다음과 같은 문구가 있는데

MSSQL does more strict type and parameter checking. Further, it doesn't have IFNULL function but instead ISNULL function, which needs to know the types of the arguments.

ifnull이 문제라는건지 isnull이 문제라는 건지 모르겠다. 두번째 문장이 해석이 안됨;




+ Recent posts