除以零 - 无法理解为什么会失败

Lyn*_*hie 2 sql t-sql sql-server

我已经编写了一个函数,只是为了解决Pro-Rata Clawback的问题.

但是每次运行时我都会得到一个Divide By Zero Error,我简单地将功能打破了.

DECLARE @ProRataAmount DECIMAL(8,2), @DaysRemaining INT,@NetValue DECIMAL(8,2), @TimeOnRisk INTEGER

SET @NetValue = 29.00
SET @TimeOnRisk = 8

SET @DaysRemaining = (365 - @TimeOnRisk)

PRINT @DaysRemaining
PRINT @NetValue

SELECT @NetValue / (@DaysRemaining/365)
Run Code Online (Sandbox Code Playgroud)

那里没有值除以零,那么为什么它会返回错误?

干杯.

Joh*_*tti 5

INT/INT将返回INT.

请尝试以下操作(请注意365.0):

SELECT @NetValue / (@DaysRemaining/365.0)
Run Code Online (Sandbox Code Playgroud)

现在,为了防止@DaysRemaining为ZERO,你仍然可以产生一个除以零,除非你像这样陷入它:

SELECT @NetValue / (NullIf(@DaysRemaining,0)/365.0)
Run Code Online (Sandbox Code Playgroud)