<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SQL中如何處理除數(shù)為0的情況?

          共 1231字,需瀏覽 3分鐘

           ·

          2021-08-19 23:31

          點(diǎn)擊關(guān)注上方“SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)”,

          設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨

          SQL專欄

          SQL基礎(chǔ)知識(shí)第二版
          SQL高級(jí)知識(shí)第二版

          問(wèn)題
          我們?cè)谶M(jìn)行數(shù)據(jù)統(tǒng)計(jì)的時(shí)候,經(jīng)常會(huì)遇到求百分比,環(huán)比,同比等這些需要除以某個(gè)數(shù)的情況,而如果除數(shù)為0,數(shù)據(jù)庫(kù)是會(huì)報(bào)錯(cuò)的。

          那么遇到這樣的情況我們?cè)趺刺幚砟??下面我們用示例給大家講解一下處理方法。

          解決辦法
          情況一
          例如  
          SELECT  A/B  FROM TAB
          遇到這樣的情況,一般的處理方法是用CASE WHEN來(lái)判斷B的值
          SELECT CASE WHEN B=0 THEN 0 ELSE A/B END  FROM TAB
          這樣當(dāng)B如果是0,我們直接賦一個(gè)值,避免A/B參與計(jì)算報(bào)錯(cuò)。

          情況二
          上面是一種常見(jiàn)的情況,但是如果遇到下面這樣的聚合函數(shù)呢?
          例如
          SELECT  SUM(A)/COUNT(B) FROM TAB
          遇到這樣的情況CASE WHEN 是不能判斷COUNT(B)的值的,因?yàn)閃HEN后面的條件不能使用聚合函數(shù)(語(yǔ)法要求),這個(gè)時(shí)候我們可以這樣處理
          SELECT  ISNULL(SUM(A)/NULLIF(COUNT(B),0),0)  FROM  TAB
          其中這里使用了兩個(gè)函數(shù),NULLIF()和ISNULL() NULLIF函數(shù)有兩個(gè)參數(shù),定義如下:
          NULLIF( expression1 , expression2 )
          其作用就是:如果兩個(gè)指定的表達(dá)式相等,就返回NULL值。

          ISNULL函數(shù)也有兩個(gè)參數(shù),定義如下:
          ISNULL( expression1 , expression2 )
          其作用是:如果第一個(gè)參數(shù)的結(jié)果為NULL,就返回第二個(gè)參數(shù)的值。

          當(dāng)COUNT(B)的結(jié)果為0時(shí),恰好與第二個(gè)給定的參數(shù)0相等,這個(gè)時(shí)候NULLIF函數(shù)就會(huì)返回NULL,而SUM(A)在除以NULL時(shí)結(jié)果為NULL,外層使用ISNULL函數(shù)再對(duì)NULL值進(jìn)行判斷,這樣最終結(jié)果就是0了。

          這兩種方法就是我們?nèi)粘L幚沓龜?shù)為0的情況了,一定要記得哦~

          最后給大家分享我寫的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語(yǔ)法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來(lái)實(shí)操。

          有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào))后臺(tái)回復(fù)關(guān)鍵字:SQL,就行
          數(shù)據(jù)前線


          后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨

          后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。


          推薦閱讀


          瀏覽 87
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色色操| 国产黄色A片三级熟女 | www.日韩AV | 婷婷久久内射频 | 青青草视频免费在线 |