情况一

例如

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处理情况演示相关推荐

  1. 整数运算和浮点数运算中除数为0的区别

    整数运算和浮点数运算中除数为0的区别: 整数中除数为0:int d4 = 1 / 0: ​ 报错:Exception in thread "main" java.lang.Arit ...

  2. mysql 除数为0_java中除数为0时出现的异常情况

    在数学中,规定被除数不能为0 那么在Java程序中一旦出现除数为0时,会出现什么情况呢: 对于除数a和被除数b (b=0), (1)如果二者均为int型(long也是int型),结果会抛出异常:jav ...

  3. java 除法 为0_Java中除数为0时计算报错的问题

    在数学中,规定被除数不能为0 那么在Java程序中一旦出现除数为0时,会出现什么情况呢: 对于除数a和被除数b (b=0), (1)如果二者均为int型(long也算是int型),结果会抛出异常:ja ...

  4. mysql中除数为0怎么解决_ora-01476除数为0的解决办法,oracle中decode()的使用

    执行报表查询,固定的一个时间点没有数据,应该是有数据的,把前一个时间节点往前调是有的,往后调也有 bebug报错 把sql放到数据库中,发现提示如截图 ====================== 解 ...

  5. 一.oracle的SQL中group by使用的情况(与聚合函数的关系)

    SELECT r.industry_1,r.industry_2,r.agent_id,r.agent_name, COUNT(DISTINCT r.customer_name_a)数据总量, COU ...

  6. sql server中除数为零的处理技巧

    在sql server中做除法处理的时候,我们经常需要处理除数为零的情况,因为如果遇到这种情况的时候,sqlserver会抛出遇到以零作除数错误的异常,我们总不希望把这个异常显示给用户吧. 做个会报这 ...

  7. 如何将不同情况下的List带到SQL中进行判断操作

    简单来说就是将List传到SQL语句中进行查询操作 其实,这里将List传到SQL语句中进行查询,方法有很多,我这里只是记录我习惯用的一种方法,原因之初是因为我要判断的情况太多了,不方便全在SQL中进 ...

  8. sql中索引不会被用到的几种情况

    转载自  sql中索引不会被用到的几种情况 1.查询谓词没有使用索引的主要边界,换句话说就是select *,可能会导致不走索引. 比如,你查询的是SELECT * FROM T WHERE Y=XX ...

  9. Mysql中SQL语句不使用索引的情况

    Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结 ...

最新文章

  1. JVM 与 Linux 的内存关系详解
  2. .Net应该学什么怎么学(一)
  3. 获取指定目录下的所有文件名
  4. css随堂笔记(一)
  5. Java并发篇_Java内存模型
  6. iOS12系统图片heic如何在电脑上查看
  7. Docker启动失败提示【exec user process caused: exec format error】
  8. dos 退出mysql_【转】MySQL 一闪退出解决_MySQL
  9. Linux automake命令
  10. 一口气完成electron的入门学习
  11. 机器学习--详解贝叶斯公式、朴素贝叶斯的来龙去脉(附上多方式代码实现)
  12. 在微信公众号中html5页面跳转页面,微信公众号自定义菜单如何将点击动作换成跳转到网页...
  13. 电脑重装系统后文件怎么恢复
  14. 可部署于windows和Linux的即时通讯系统
  15. 微商卖养生产品怎么吸粉?让客户慢慢进入你的营销场景
  16. 详解1M宽带下载速度?1M等于多少kb?
  17. mac下如何在多种输入法中达到最好的切换体验
  18. Java程序员:快来像我这样做,3天辞退不是梦
  19. User’s Guide
  20. 九针串口跟电脑主板接法

热门文章

  1. python sklearn下载了但是引用失败_关于python:导入sklearn时出错
  2. linux 权限模式,Linux权限模式
  3. python处理重复的复制粘贴_如何将数组复制/重复N次到新数组中?
  4. c语言比较当前日期大小,C语言判断两个日期只差的方法
  5. lesson7 集合set
  6. 第二阶段 铁大Facebook——十天冲刺(六)
  7. springcloud(五) Hystrix 降级,超时
  8. 我的博客园第一个博客.
  9. [HZOI 2016][Tyvj 1729]文艺平衡树 这道题我真是哭了,调了一下午,一晚上
  10. Sharepoint学习笔记—ECM系列--文档集(Document Set)的实现