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'