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

広告
eyecatch

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

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 関数の使い方について解説しました。

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。