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

2022-03-06 17:31:27 字數 1388 閱讀 3779

在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

@aint;2

declare

@bint;3

set@a=10

4set@b=

05select@a/

nullif(@b,0)

其執行結果自然為null了。

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

declare

@aint

;declare

@bint

;set@a=

10set@b=

0select

isnull(@a

/nullif(@b,0),1)

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

(如果有朋友對isnull函式不了解的話,這裡可以解釋一下。

isnull的定義如下:

isnull(引數1,引數2)

其作用就是,當引數1等於null時,就返回引數2的值。)

SQL 遇到以零作除數錯誤的處理

這樣乙個情況 select from a where c 0 and b c 0.5 and b c 0.6 這樣一條語句,由於b,c是二個數值列,裡面記錄的是金額,而c 的話有可能為0,那麼這時我們雖然加上了c 0這個條件,卻仍有可能 出現 遇到以零作除數錯誤 這個錯誤.解決這個問題,有二種方法,...

解決打包遇到的 mssql問題

traceback most recent call last file macc.py line 7,in file d 星傳 pyinstaller 3.2 pyinstaller loader pyimod03 importers.py line 573,in load module modu...

基於mssql導mysql遇到的問題

今天遇到乙個問題,程式設計客棧在通過php的mssql函式讀取sql server資料匯入mwww.cppcns.comysql資料庫時,sql server 的datetime型別資料不能直接通過select出來,程式設計客棧必須要先轉換為varchar型別資料,然後匯入到mysql庫中.複製 如...