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的情況了,一定要記得哦!
總結
以上是生活随笔為你收集整理的SQL中除数为0处理情况演示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot跨域问题解决方案
- 下一篇: CentOS 搭建内部Yum源同步阿里Y