偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL中如何處理除數為0的情況?

運維 數據庫運維
我們在進行數據統(tǒng)計的時候,經常會遇到求百分比,環(huán)比,同比等這些需要除以某個數的情況,而如果除數為0,數據庫是會報錯的。

[[418171]]

本文轉載自微信公眾號「SQL數據庫開發(fā)」,作者丶平凡世界。轉載本文請聯(lián)系SQL數據庫開發(fā)公眾號。

問題

我們在進行數據統(tǒng)計的時候,經常會遇到求百分比,環(huán)比,同比等這些需要除以某個數的情況,而如果除數為0,數據庫是會報錯的。

那么遇到這樣的情況我們怎么處理呢?下面我們用示例給大家講解一下處理方法。

解決辦法

情況一

例如

  1. SELECT  A/B  FROM TAB 

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

  1. SELECT  
  2. CASE WHEN B=0 THEN 0 ELSE A/B END   
  3. FROM TAB 

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

情況二

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

例如

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

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

  1. SELECT   
  2. ISNULL(SUM(A)/NULLIF(COUNT(B),0),0)   
  3. 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數據庫開發(fā)
相關推薦

2020-11-24 12:10:22

瀏覽器前端斷網

2018-11-21 12:27:21

JavaScript 貨幣值區(qū)域

2023-03-09 12:21:38

2024-10-16 17:04:13

2011-04-11 17:10:16

Oracle

2019-11-08 08:00:00

ASP .NETASP .NET Cocookie

2012-07-30 09:35:10

項目管理

2025-02-21 15:43:29

slotredis集群

2019-08-15 10:20:19

云計算技術安全

2021-03-24 10:40:26

Python垃圾語言

2012-12-12 09:49:41

2020-12-29 09:11:33

LinuxLinux內核

2017-03-13 13:21:34

Git處理大倉庫

2010-10-22 17:22:05

sql server刪

2011-12-15 12:32:19

JavaNIO

2011-01-21 16:27:43

NagiosSendmail

2021-02-02 07:52:02

CSS短內容長內容

2019-02-25 08:35:22

機器學習數據模型

2021-12-09 09:54:02

領導者疫情情商

2017-10-26 08:43:18

JavaScript內存處理
點贊
收藏

51CTO技術棧公眾號