「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

SQL で 割り算(除算) を行う際、
分母が 0 になると 0除算エラー が発生します。

特に、

  • 集計結果

  • 売上 ÷ 件数

  • 比率・平均値計算

などでは、実務で頻繁に遭遇するトラブルです。

この記事では、
NULLIF を使って安全に0除算を回避する方法 を中心に解説します。

SQL:0除算エラーを防ぐ書き方


0除算エラーとは?

例えば、以下のような SQL を実行した場合です。

もし count = 0 の行が存在すると、DB によっては以下のようなエラーになります。

  • Oracle:ORA-01476: divisor is equal to zero

  • PostgreSQL / MySQL:division by zero エラー

👉 SQL自体が失敗する ため、結果が1件も返らないケースもあります。


NULLIF を使った基本的な回避方法

NULLIF とは?

  • 値1 と 値2 が 等しければ NULL

  • 等しくなければ 値1 を返す

この性質を使って、
0 を NULL に変換してから割り算 します。


基本形(最もよく使う)

動作イメージ

countNULLIF(count,0)計算結果
1010正常計算
11正常計算
0NULL結果は NULL(エラーにならない)

👉 0除算エラーが発生しない のが最大のメリットです。


集計関数と組み合わせる例

SUM / COUNT を使う場合

  • 注文が1件もない場合
    COUNT = 0
    → 結果は NULL

実務で非常によく使われる書き方です。


CASE 文での回避方法(比較)

NULLIF を使わず、CASE で書くことも可能です。

比較すると…

方法特徴
NULLIFシンプル・可読性が高い
CASE条件が複雑な場合に向く

👉 単純な0除算回避なら NULLIF が最適 です。


結果を 0 表示にしたい場合(COALESCE)

NULL ではなく 0 を表示したい ケースもあります。

  • 0件 → 0

  • それ以外 → 正常な計算結果

レポート・画面表示用 SQL ではよく使います。


よくある注意点

❌ IFNULL / NVL で 0 に戻すのはNG

👉 0に戻してしまうため、結局0除算エラー になります。


小数点計算にも注意

整数同士の割り算だと、DB によっては整数除算になります。


まとめ

  • SQL の割り算では 0除算エラー対策が必須

  • NULLIF(分母, 0) を使うのが 最もシンプルで安全

  • 表示用途では COALESCE と組み合わせる

  • 実務SQL・集計SQLでは必須テクニック

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x