1. ホーム
  2. mysql

mysqlのifnullとcoalesceの違いは何ですか?

2023-07-30 01:57:57

質問

select ifnull(null,'replaces the null')
-->replaces the null

select coalesce(null,null,'replaces the null')
-->replaces the null

どちらの節でも、主な違いは引数の渡し方です。例えば ifnull は 2 つのパラメータで、coalesce は 2 つか 3 つを渡すことができます。 また、MSSqlではどのように違うのでしょうか?

どのように解決するのですか?

との主な違いは、以下の通りです。 IFNULL 関数は二つの引数を取り、最初の引数が NULL であれば2番目の引数を、1番目の引数が NULL .

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'

UPDATEです。 MSSQLはより厳密な型とパラメータのチェックを行います。さらに、それは IFNULL 関数がなく、代わりに ISNULL 関数で、引数の型を知る必要があります。 そのため

SELECT ISNULL(NULL, NULL);
-> results in an error

SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL

また COALESCE 関数は、少なくとも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'