SQL中除數為0處理情況演示

roc_guo發表於2021-09-04

SQL中除數為0處理情況演示SQL中除數為0處理情況演示

情況一

例如

SELECT  A/B  FROM TAB

遇到這樣的情況,一般的處理方法是用CASE WHEN來判斷B的值

SELECT  
CASE WHEN B=0 THEN 0 ELSE A/B END   
FROM TAB

這樣當B如果是0,我們直接賦一個值,避免A/B參與計算報錯。

情況二

上面是一種常見的情況,但是如果遇到下面這樣的聚合函式呢?

例如

SELECT  SUM(A)/COUNT(B) FROM TAB

遇到這樣的情況CASE WHEN 是不能判斷COUNT(B)的值的,因為WHEN後面的條件不能使用聚合函式(語法要求),這個時候我們可以這樣處理

SELECT   
ISNULL(SUM(A)/NULLIF(COUNT(B),0),0)   
FROM  TAB

其中這裡使用了兩個函式,NULLIF()和ISNULL()

NULLIF函式有兩個引數,定義如下:

NULLIF( expression1 , expression2 )

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

ISNULL函式也有兩個引數,定義如下:

ISNULL( expression1 , expression2 )

其作用是:如果第一個引數的結果為NULL,就返回第二個引數的值。

當COUNT(B)的結果為0時,恰好與第二個給定的引數0相等,這個時候NULLIF函式就會返回NULL,而SUM(A)在除以NULL時結果為NULL,外層使用ISNULL函式再對NULL值進行判斷,這樣最終結果就是0了。

這兩種方法就是我們日常處理除數為0的情況了,一定要記得哦!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2790381/,如需轉載,請註明出處,否則將追究法律責任。

相關文章