MSSQL遇到以零作除數錯誤的處理方法


在sql server中做除法處理的時候,我們經常需要處理除數為零的情況,因為如果遇到這種情況的時候,sqlserver會拋出遇到以零作除數錯誤的異常,我們總不希望把這個異常顯示給用戶吧。

做個會報這個錯誤的示例,如以下sql代碼:

declare @a int;
declare @b int;
set @a=10
set @b=0
select @a/@b


運行就會拋出遇到以零作除數錯誤的錯誤

本章主要講解一下如何在sql server處理除數為零的兩種方法:
一,利用case語句。
我們改寫上面的sql,當@b=0的時候,我們就返回1.改寫如下:

declare @a int;
declare @b int;
set @a=10
set @b=0
select case @b when 0 then 1 else @a/@b end

這樣寫當然是正確的,但顯的麻煩,下面我們看一下第二處理方法。


二,利用nullif函數
nullif函數有兩個參數,定義如下:

NULLIF( expression , expression )

其作用就是:如果兩個指定的表達式相等,就返回null值。

看一示例:

select nullif(0,0)


運行結果:null

我們知道,null與任何數進行任何運算,其結果都等於null,利用這點,我們可以將上面的sql改寫為:

1 declare @a int;
2 declare @b int;
3 set @a=10
4 set @b=0
5 select @a/nullif(@b,0)

 

其運行結果自然為null了。

再利用isnull函數,我們就可以實現當@b=0的時候,結果返回1的需求了。最終的sql改寫如下:

declare @a int;
declare @b int;
set @a=10
set @b=0
select isnull(@a/nullif(@b,0),1)

 

OK,兩種方法介紹完畢,相對於方法一,我更推薦大家使用方法二,因為方法二的代碼更簡省。

(如果有朋友對isnull函數不了解的話,這里可以解釋一下。
isnull的定義如下:
isnull(參數1,參數2)
其作用就是,當參數1等於null時,就返回參數2的值。)

來源:.net學習網


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM