일단
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이 문제라는 건지 모르겠다. 두번째 문장이 해석이 안됨;
'DBMS > MySQL' 카테고리의 다른 글
C 언어에서 MySQL 연결할 때 링크 에러가 발생하면 (0) | 2017.01.24 |
---|---|
ubuntu 에서 mysql 설치 시 문제 (0) | 2017.01.24 |
Foreign Key 설정 방법 및 옵션 설명 (0) | 2014.08.22 |