指定した値と同じ場合は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」って書けば済むような気がします。
ちょっと使いどころいまいち不明のままです。