- Home ›
- SQLite入門 ›
- SQLite関数の使い方 ›
- HERE
nullif関数
nullif関数は2つの値を比較し、同じであればNULLを返し異なっていれば最初の値を返します。書式は次の通りです。
nullif(値1, 値2)
2つの値が同じであればNULLを返しますので、NULLではない値をNULLと見なしたい場合などに使用します。
具体的には次のように使用します。
select avg(point) from pointtable; select avg(nullif(point, 0)) from pointtable;
最初のSELECT文では「point」カラムの値の平均値を取得します。avg関数はNULLでない値の平均を取ります。2番目のSELECT文でも「point」カラムの値の平均を取得しますが、カラムの値が0だった場合はnullif関数の2番目の値と等しいためnullif関数がNULLを返します。結果的に2番目のSELECT文では「point」カラムの値がNULLと0でない値の平均を取得します。
サンプル
では実際に試してみます。
次のようなテーブルを対象とします。
このテーブルの「point」カラムの値を対象とした平均を取得します。
カラムに格納されている値がNULLの行は除外されますので、(85 + 74 + 0 + 69) / 4 = 57となります。
ではカラムの値が0のものについても除外するようにしてみます。
select avg(nullif(point, 0)) from pointtable;
nullif関数によって「point」カラムの値を0と比較し、同じだった場合はNULLを返します。結果的にカラムに格納されている値が0だった場合はNULLとして扱われるため平均を計算を対象から外されます。よって(85 + 74 + 69) / 3 = 76となります。
( Written by Tatsuo Ikura )