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'