指定した値と同じ場合はNULLを返すNULLIF関数の解説します。
使いどころがいまいち不明な「NULLIF()」
SQLServerには使いどころがいまいち不明な関数があります。
そのなかの一つ「NULLIF()」。
NULLIF()は値が同じならNULLを返す
NULLIF()は2つの引数を持ち、その引数の値が同じならNULL、違うなら
第1引数の値を返します。
でも使いどころいまいち不明です。
一応使い方のサンプル
CREATE TABLE test_table
(
no INT
,name VARCHAR(20)
,age INT
)
INSERT INTO test_table VALUES( 1, 'taro', 10 )
INSERT INTO test_table VALUES( 2, 'jiro', 0 )
INSERT INTO test_table VALUES( 3, 'hanako', 20 )
INSERT INTO test_table VALUES( 4, 'yoshiko', 30 )
INSERT INTO test_table VALUES( 5, 'no-name', 40 )
SELECT
AVG( NULLIF( age, 0 )) AS _ゼロの人は含めない平均値
,AVG( age ) AS _ゼロの人も含める平均値
FROM
test_table
DROP TABLE test_table
で、実行結果は
_ゼロの人は含めない平均値 _ゼロの人も含める平均値
25 20
どこかのサイトには割り算の分母が0の場合は例外エラーが発生するので、
SELECT
100 / NULLIF( point, 0 )) AS _ゼロ割を防ぐ
FROM
test_table
みたいな例があったけどWhere句で「point!=0」って書けば済むような気がします。
ちょっと使いどころいまいち不明のままです。

