解決SQL嘗試以零除的錯誤

  • 6602
  • 0

以零除的錯誤

下列查詢在 SQL Server 2008 中會失敗,但可於 SQL Server 2000 中完成。

SELECT x/y FROM T INNER JOIN S ON x = a AND y > b
OPTION(HASH JOIN)

查詢失敗的原因是在對 y=0 評估 x/y 運算式時,該運算式會導致除數為零的錯誤。

下列程式碼是可以讓查詢正確執行的解決方案:

SELECT x/NULLIF(y,0) FROM T INNER JOIN S ON x = a AND y > b
OPTION(HASH JOIN)
 

如果 y = 0NULLIF(y,0) 運算式會傳回 NULL。否則,運算式便會傳回 y 的值。運算式 x/NULL 則會產生 NULL,而且不會發生任何例外狀況。

請考量下列涉及將字元資料轉換成數值類型的範例

資料來源:http://msdn.microsoft.com/zh-tw/library/ms188295.aspx