避免零做除数
来源:互联网 发布:f盘文件显示无数据 编辑:程序博客网 时间:2024/04/30 00:22
--摘自《SQL HACKS》 by claro ,in 西安 , select getdate() --2009-01-06 13:46:26.543
NULLIF是一个少为人知的函数,它在其参数相等时返回NULL。它是回避被零除例外的方便手段。
表达式NULLIF(X,Y)在x和y不同时返回x。如果x和y相同,则返回NULL。
假设你需要计算一对数的比值,但除数有可能为零,如表5-6所示。
表5-6 stats表
page impressions clicks
index.htm 1,000 10
page1.htm 0 0
page2.htm 500 10
要计算每个页面的点进率(CTR),那么就用点击数(clicks)除以页面浏览数量(impressions),再乘上100。由于page1.htm处于脱机状态,它的页面浏览量依然是零,因此,CTR计算将产生被零除错误。这个示例出自SQL Server(其他数据库给出类似错误):
select page , 100.0 * clicks / impressions from stats;
page
-------------------
index.htm
msg 8134, level 16,stste 1,server TINYVAIO, Line 1 Divide by zero error encountered.
MySQL不报错,它返回NULL来解决这个问题。
你能够使用NULLIF在浏览数量为零时生产NULL来解决这个问题:
select page , 100.0*clicks / NULLIF(impressions,0) from stats;
page
---------------------
index.htm 1.000000000000
page1.htm NULL
page2.htm 2.000000000000
在SQL中,任何数值被NULL出都得到NULL值,并且不产生错误。
IFNULL和ISNULL 和NULLIF
IFNULL是一个MySQL函数。它类似与COALESCE 和 NVL 。如果第一个参数不为NULL,那么IFNULL返回第一个函数,否则分会第二个参数。
ISNULL是另一个MySQL函数。当输入为NULL时,ISNULL返回1,否则返回0。
正如本文展示的那样,NULLIF是一个标准的SQL函数,所有主流SQL厂商都支持这个函数。
NULLIF是一个少为人知的函数,它在其参数相等时返回NULL。它是回避被零除例外的方便手段。
表达式NULLIF(X,Y)在x和y不同时返回x。如果x和y相同,则返回NULL。
假设你需要计算一对数的比值,但除数有可能为零,如表5-6所示。
表5-6 stats表
page impressions clicks
index.htm 1,000 10
page1.htm 0 0
page2.htm 500 10
要计算每个页面的点进率(CTR),那么就用点击数(clicks)除以页面浏览数量(impressions),再乘上100。由于page1.htm处于脱机状态,它的页面浏览量依然是零,因此,CTR计算将产生被零除错误。这个示例出自SQL Server(其他数据库给出类似错误):
select page , 100.0 * clicks / impressions from stats;
page
-------------------
index.htm
msg 8134, level 16,stste 1,server TINYVAIO, Line 1 Divide by zero error encountered.
MySQL不报错,它返回NULL来解决这个问题。
你能够使用NULLIF在浏览数量为零时生产NULL来解决这个问题:
select page , 100.0*clicks / NULLIF(impressions,0) from stats;
page
---------------------
index.htm 1.000000000000
page1.htm NULL
page2.htm 2.000000000000
在SQL中,任何数值被NULL出都得到NULL值,并且不产生错误。
IFNULL和ISNULL 和NULLIF
IFNULL是一个MySQL函数。它类似与COALESCE 和 NVL 。如果第一个参数不为NULL,那么IFNULL返回第一个函数,否则分会第二个参数。
ISNULL是另一个MySQL函数。当输入为NULL时,ISNULL返回1,否则返回0。
正如本文展示的那样,NULLIF是一个标准的SQL函数,所有主流SQL厂商都支持这个函数。
- 避免零做除数
- 为什么零不能做除数
- 谨防除数为零
- 0做除数时
- 0做除数
- sql语句除数为零
- SQL 中除数为零的解决方法
- SQL 判断除数不能为零
- java语言中除数为零问题
- 除数
- SQL 遇到以零作除数错误的处理
- SQL 遇到以零作除数错误的处理
- 在vc6.0中除数为零的验证
- sql server中除数为零的处理技巧
- sql中除数为零和null的判断
- 没有躲过的坑--意想不到的除数为零
- 遇到了 “遇到以零作除数错误” 的问题
- sql server 遇到以零作除数错误。
- Bluetooth MTU
- 基于sqlserver2000的membership配置
- Windows Media Player控件研究
- 金融风暴会引发中国信用卡危机吗
- symbian开发中的时间使用
- 避免零做除数
- 详细解析Java中抽象类和接口的区别
- 实例讲解 手把手教你搭建适合自己的VPN
- C# 保存所有TextBox,下次全部装入保存界面的输入框内容
- 常见问题:IIS“默认网站”启动不了,提示“发生意外错误ox8ffe2740"
- Client Side Load Balancing for Web 2.0 Applications
- Oracle中根据Date型转换成Java对应的long型毫秒数
- 让Tomcat支持PHP
- GSP 学习笔记(1)-- GRAILS开发