2012-07-10 28 views
1

我正在除以0錯誤。我注意到,有時我分割的字段是NULL。當某些除數爲NULL時處理除數0錯誤

(SUM(RentMonths * SQFT)/SUM(SQFT)) 

什麼是處理這種情況時SQFT有時可以爲空的正確方法?我知道這可能是不好的數據,但除此之外,我現在無法解決這個問題。

回答

5

除以NULL完全有效 - 結果僅爲NULL。問題是(如錯誤消息所述)當您嘗試除以

您可以使用NULLIF來解決這個問題:

(SUM(RentMonths * SQFT)/NULLIF(SUM(SQFT), 0)) 

結果將是NULL如果除數是0或者如果操作數是NULL


正如在評論中指出,一個CASE聲明也可以使用:

CASE WHEN SUM(SQFT) <> 0 THEN (SUM(RentMonths * SQFT)/SUM(SQFT)) END 

的優點是,這將在幾乎所有的數據庫使用,但缺點是,它重複表達來計算除數。

+0

+1。或合併,或案例聲明:-) – Bridge 2012-07-10 15:43:36

+0

感謝yea情況是相當sl as在可讀的代碼。我會嘗試NULLIF。 – PositiveGuy 2012-07-10 15:47:22

0

IF語句在這裏似乎很適合,不是嗎?

不知道這是正確的TSQL語法,但:

IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT)/SUM(SQFT))