確認 - syntax to use near mysql




SQLでのDivide By Zeroエラーを防ぐための簡単な方法 (4)

これを行うよりよい方法は、次のようにNULLIFを使用することです。

Percentage =  100 * ClubTotal / NULLIF(AttTotal, 0)

原因となるSQLクエリがあります。

ゼロ除算例外

これを防ぐために、 CASEステートメントでラップしました。 もっと簡単な方法はありますか?

これが私のコードです:

Percentage =  CASE WHEN AttTotal <> 0 THEN (ClubTotal/AttTotal) * 100 ELSE 0 END

ゼロ除算問題を処理するために私が見つけた解決策は、ある種の比率/パーセンテージ型分析をしばしば行わなければならないので、状況に対処するために私が求めることができる関数を作成することです。 これが私が書いた簡単な関数です。

Create Function fnRatio(@Numerator decimal(10,2),@Demoninator decimal(10,2))

Returns decimal(10,2)

Begin

Return

Case 

      When @Demoninator = 0 then 0.00 



      When @Demoninator Is Null then Null



Else

      @Numerator/@Demoninator

End 

終わり

よろしく

ジェイソン


私はNULLIF少し違った方法で使っています。場合によっては、何らかの値を返さなければならないからです。 通常、ゼロ除算エラーがある場合は0を返す必要があります。 その場合は、式全体をISNULLラップします。 だから:

Percentage =  ISNULL(100 * ClubTotal / NULLIF(AttTotal, 0), 0)

内側部分はNULLと評価され、 ISNULLはそれを0に置き換えNULL


Percentage =  IsNull(ClubTotal/NullIf(AttTotal, 0) * 100, 0)




sql-server-2005