- Home ›
- SQLite入門 ›
- SQLite関数の使い方 ›
- HERE
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'を返しますのでデフォルト値のように使用することができます。
サンプル
では実際に試してみます。
次のようなテーブルを対象とします。
「name」カラムの値、「nickname」カラムの値、'no name'を順に確認し、NULLでない値を取得してみます。
select coalesce(name, nickname, 'no name') from personal;
今度はifnull関数を使って「name」カラムの値、「nickname」カラムの値の中でNULLでない最初の値を取得してみます。
select ifnull(name, nickname) from personal;
( Written by Tatsuo Ikura )