2つの主な違いは、IFNULL 関数は2つの引数を取り、NULLでない場合は最初の引数を返します または、最初のコードがNULLの場合は2番目のコード 。
COALESCE 関数は2つ以上のパラメーターを取り、最初の非NULLパラメーター、つまり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の関数では、少なくとも1つのパラメーターが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'