코드를 보다가 COALESCE(group_name, '소속 없음') 쿼리를 보고 왜 IFNULL을 안 썼을까 하는 의문이 들었다.
둘 다 MySQL에서 Null값을 처리하기 위해 사용되는 함수인데, NULL 체크할 수 있는 argument 개수에 차이가 있다.
IFNULL 함수는 MySQL에서만 사용 가능하다.
val 값이 null이면 x를 반환하고, null이 아니면 val을 그대로 반환한다.
SELECT IFNULL('some value', 'some other value');
-> returns 'some value'
SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'
COALSECE는 SQL 표준 함수이다.
val1 값이 null이면 val2를 반환, val2도 null이면 val3를 반환한다.
SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function
SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'
COALSECE
SQL 표준 함수 (더 유연하고 표준 함수에 속하는 COALSECE 함수를 사용하는 것이 좋다)
multiple argument를 처리할 수 있다.
IFNULL
MySQL에서만 사용 기능 (MSSQL의 ISNULL과 동일)
single argument를 처리할 수 있다.