Hlavní rozdíl mezi těmito dvěma je, že IFNULL funkce vezme dva argumenty a vrátí první, pokud není NULL nebo druhý, pokud je první NULL .
COALESCE funkce může mít dva nebo více parametrů a vrací první parametr, který není NULL, neboli NULL pokud jsou všechny parametry null, například:
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'
AKTUALIZACE: MSSQL provádí přísnější kontrolu typu a parametrů. Dále nemá IFNULL funkce, ale místo toho ISNULL funkce, která potřebuje znát typy argumentů. Proto:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Také COALESCE funkce v MSSQL vyžaduje, aby alespoň jeden parametr nebyl null, proto:
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'