SQL在數據處理過程當中,遇到除數爲0該怎麼辦?

SQL專欄數據庫

SQL數據庫基礎知識彙總express

SQL數據庫高級知識彙總ide

問題函數

咱們在進行數據統計的時候,常常會遇到求百分比,環比,同比等這些須要除以某個數的狀況,而若是除數爲0,數據庫是會報錯的。code

那麼遇到這樣的狀況咱們怎麼處理呢?下面咱們用示例給你們講解一下處理方法。it

解決辦法io

狀況一class

例如 基礎

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的狀況了,必定要記得哦~

相關文章
相關標籤/搜索