Основната разлика между двете е, че IFNULL
функцията приема два аргумента и връща първия, ако не е NULL
или вторият, ако първият е NULL
.
COALESCE
функцията може да приема два или повече параметъра и връща първия параметър, различен от NULL, или NULL
ако всички параметри са нулеви, например:
SELECT IFNULL('some value', 'some other value');
-> returns 'some value'
SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'
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'
АКТУАЛИЗИРАНЕ: MSSQL извършва по-строга проверка на типове и параметри. Освен това той няма IFNULL
функция, но вместо това ISNULL
функция, която трябва да знае типовете на аргументите. Следователно:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Също така COALESCE
функцията в MSSQL изисква поне един параметър да не е нулев, следователно:
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'