-5

誰かがこの問題を解決するのを手伝ってください:私はこれを選択しています:

SELECT Cast(( Isnull(price, 0) + Isnull(notarycosts, 0)
              + Isnull(landtax, 0) + Isnull(othertaxes, 0)
              + Isnull(agentfee, 0) + Isnull(cadastralfee, 0)
              + Isnull(tabulationfee, 0)
              + Isnull(certsarcini, 0) ) / ( totalareasqm / 10000 * fixhist ) AS
                   DECIMAL(12, 4)) AS EurPerHa

ゼロ除算エラーが発生し、データベースから最後の行を削除するまでアプリがブロックされることがあります。どういうわけかこの問題を解決できますか?

ありがとう!

4

4 に答える 4

5

またはは0TotalAreaSqmですFixHist。ゼロで除算することはできないので、ゼロが存在する場合、スクリプトは何をすべきですか?

私は通常、それをNULLにするか、既知の値を使用して機能させるというアプローチを目にします。安全な価値が何であるか私にはわかりません。

ヌルアプローチにする

select cast((isnull(price,0)+isnull(notarycosts,0)+isnull(landtax,0)+isnull(othertaxes,0)+isnull(agentfee,0)+isnull(cadastralfee,0)+isnull(tabulationfee,0)+isnull(certsarcini,0))/(NULLIF(TotalAreaSqm, 0)/10000*NULLIF(FixHist, 0) as decimal(12,4)) as EurPerHa
于 2012-12-06T20:40:18.970 に答える
0

チェックFixHistし、TotalAreaSqmそれはnullでも0でもありません。

コード:

select CASE WHEN ISNULL(NULLIF(FixHist,0),0) !=0 
                 AND ISNULL(NULLIF(TotalAreaSqm,0),0) !=0
THEN
cast((isnull(price,0)+
isnull(notarycosts,0)+
isnull(landtax,0)+
isnull(othertaxes,0)+
isnull(agentfee,0)+
isnull(cadastralfee,0)+
isnull(tabulationfee,0)+
isnull(certsarcini,0))/(TotalAreaSqm/10000*FixHist) as decimal(12,4))
ELSE 0 END as EurPerHa
于 2012-12-06T20:36:21.460 に答える
0
SELECT IIF( TotalAreaSqm*FixHist=0
            ,null
            , cast(
                    ( isnull(price,0)
                      + isnull(notarycosts,0)
                      + isnull(landtax,0)
                      + isnull(othertaxes,0)
                      + isnull(agentfee,0)
                      + isnull(cadastralfee,0)
                      + isnull(tabulationfee,0)
                      + isnull(certsarcini,0) 
                    )
                    /
                   (TotalAreaSqm / 10000 * FixHist ) 
               as decimal(12,4))
           ) as EurPerHa
于 2012-12-06T20:44:37.373 に答える
-3
( isnull(totalareasqm,1) / 10000 * isnull(fixhist,1) )
于 2012-12-06T20:38:54.617 に答える