足し算・引き算・掛け算・割り算などに NULL が含まれていると 結果は NULL になります。ISNULL 関数で NULL を変換するなどして対処します。
NULL を含む計算
SELECT 1 + NULL, --結果 = NULL
1 - NULL, --結果 = NULL
1 * NULL, --結果 = NULL
1 / NULL --結果 = NULL
対応策
ISNULL 関数を使用し、 NULL を ゼロに 変換します。ISNULL 関数 の使い方
結果 = ISNULL(値, 値がNULLのときに返す値)
サンプルSQL
SELECT 1 + ISNULL(NULL, 0), --結果 = 1
1 - ISNULL(NULL, 0), --結果 = 1
1 * ISNULL(NULL, 0) --結果 = 0
割る数を ゼロ にすると 0 除算エラー(division by zero)となるため、注意が必要です。
SELECT 1 / ISNULL(NULL, 0) --結果 = 0 除算エラー
検証環境
- Microsoft SQL Server 2019 (RTM-CU10) (KB5001090) - 15.0.4123.1 (X64) Mar 22 2021 18:10:24 Copyright (C) 2019 Microsoft Corporation Express Edition (64-bit) on Linux (Ubuntu 20.04.2 LTS) <X64>
- Docker image: mcr.microsoft.com/mssql/server:2019-latest
- Docker Desktop 3.3.1(63152)
- Docker Engine 20.10.5
- Microsoft SQL Server Management Studio v18.8(15.0.18369.0)
- Microsoft Windows 10 Pro Version 20H2 OS Build 19042.928 Experience: Windows Feature Experience Pack 120.2212.551.0