指定した値と同じ場合はNULLを返すNULLIF関数

IT業界について考えてみる SQL Server

指定した値と同じ場合は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」って書けば済むような気がします。

ちょっと使いどころいまいち不明のままです。

タイトルとURLをコピーしました