ifnull関数 / coalesce関数

広告

ifnull関数は引数に指定した2つの値の中で、最初のNULLでない値を取得するために使用します。書式は次の通りです。

ifnull(値1, 値2)

引数には2つの値を指定します。ifnull関数は引数に指定された2つの値の中で、最初にNULLでなかった値をコピーしたものを返します。どちらの値もNULLだった場合にはNULLを返します。

同じような目的で利用する関数にcoalesce関数があります。coalesce関数は引数に指定した値の中で、最初のNULLでない値を取得するために使用します。書式は次の通りです。

coalesce(値1, 値2, ...)

引数には必要なだけの値を指定して下さい。少なくとも2個以上指定する必要があります。coalesce関数は引数に指定された値の中で、最初にNULLでなかった値をコピーしたものを返します。全ての値がNULLだった場合にはNULLを返します。

具体的には次のように使用します。

select ifnull(name, nickname) from tablename;
select coalesce(name, nickname, 'no name') from tablename;

1番目のSELECT文では「name」カラムとの値がNULLでなければ「name」カラムの値を返し、「name」カラムの値がNULLなら'no name'を返します。2番目のSELECT文では「name」カラム、「nickname」カラム、'no name'と確認していき最初にNULLでなかった値を返します。2つのカラムがいずれもNULLだった場合に'no name'を返しますのでデフォルト値のように使用することができます。

サンプル

では実際に試してみます。

次のようなテーブルを対象とします。

p23-1

「name」カラムの値、「nickname」カラムの値、'no name'を順に確認し、NULLでない値を取得してみます。

select coalesce(name, nickname, 'no name') from personal;

p23-2

今度はifnull関数を使って「name」カラムの値、「nickname」カラムの値の中でNULLでない最初の値を取得してみます。

select ifnull(name, nickname) from personal;

p23-3

( Written by Tatsuo Ikura )