指定した値と等しければNULLを返す(nullif関数)

nullif 関数を使うと2つの引数の値を比較し、等しければ NULL を返し等しくなければ1番目の引数の値を返します。ここでは SQLite における nullif 関数の使い方について解説します。

(Last modified: )

nullif関数の使い方

nullif 関数は2つの値を比較し、同じであれば NULL を返し異なっていれば最初の値を返します。書式は次の通りです。

nullif(値1, 値2)

1 番目の引数の値を 2 番目の引数と比較して同じだったら NULL に置き換えたい場合に使用します。例えば 2 番目の引数に 0 を指定して、 0 と等しい場合は NULL にしたい場合などによく使用されるようです。

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table tokuten(name text, point integer);

nullif関数の使い方(1)

INSERT 文を使って次のようなデータを格納してあります。

insert into tokuten values('Yamada', 84); insert into tokuten values('Suzuki', 73); insert into tokuten values('Hori', -1); insert into tokuten values('Endou', 91);

nullif関数の使い方(2)

ここで avg 関数を使って point カラムの値の平均を取得してみます。 下記のように平均を取った場合は (84 + 73 - 1 + 91) ÷ 4 = 61.75 となります。

select avg(point) from tokuten;

nullif関数の使い方(3)

数値が -1 のカラムは何らかの理由で除外したい場合だった場合、 nullif 関数を使いカラムの値が -1 だった場合には NULL に変換してから平均を取得してみます。 avg 関数では NULL の値は除外して計算するので、下記のように平均を取った場合は (84 + 73 + 91) ÷ 3 = 82.66 となります。

select avg(nullif(point, -1)) from tokuten;

nullif関数の使い方(4)

このように特定の値と等しい場合に NULL に置き換えたい場合に利用します。

-- --

nullif 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。