- Home
- SQL Server
- [SQL Server]NULLの値を別の値に変換するISNULL関数
[SQL Server]NULLの値を別の値に変換するISNULL関数
- 2017/2/20
- SQL Server
- CASE, ISNULL, NULLを別の値に変換
- コメントを書く
CASE文とISNULL関数
概要
下図のようなテーブルがある。
このテーブルの全期間の売り上げの合計を求めたいが、NULL(売上金額が未確定のもの)は除外したい。
CASE文を使用する場合
CASE文でNULLの値を判定する場合は下記の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT ITEM_NAME ,SUM( CASE WHEN SALES_PRICE IS NULL THEN 0 ELSE SALES_PRICE END ) AS SALES_PRICE FROM 売上テーブル GROUP BY ITEM_NAME |
ISNULL関数を使用する場合
NULLを別の値に変換するだけなら、上記CASE文よりも、「ISNULL関数」を使用した方がコードがすっきりする。
1 2 3 4 5 6 7 |
SELECT ITEM_NAME ,SUM(ISNULL(SALES_PRICE,0)) AS SALES_PRICE FROM 売上テーブル GROUP BY ITEM_NAME |
※第二引数を0ではなく別の値にしても良い
SUM関数はNULLを除外する
これを利用するかどうか。
「DBやバージョンによる」という情報もあり、あまり使用すべきではないという意見が多い。
だがさすがに、今使っているDBで、同じクエリを実行するたびに実行結果が異なるというのはありえないため、動作確認後に利用するほうが望ましい。
1 2 3 4 5 6 7 |
SELECT ITEM_NAME ,SUM(SALES_PRICE) AS SALES_PRICE FROM 売上テーブル GROUP BY ITEM_NAME |
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。