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

做个会报这个错误的示例,如以下sql代码:

declare @a int;
declare @b int;
set @a=10
set @b=0
select @a/@b
运行就会抛出遇到以零作除数错误的错误

本章主要讲解一下如何在sql server处理除数为零的两种方法:
一,利用case语句。
我们改写上面的sql,当@b=0的时候,我们就返回1.改写如下:

declare @a int;
declare @b int;
set @a=10
set @b=0
select case @b when 0 then 1 else @a/@b end
这样写当然是正确的,但显的麻烦,下面我们看一下第二处理方法。

二,利用nullif函数。
nullif函数有两个参数,定义如下:
NULLIF( expression , expression )
其作用就是:如果两个指定的表达式相等,就返回null值。
看一示例:

select nullif(0,0)
运行结果:null

我们知道,null与任何数进行任何运算,其结果都等于null,利用这点,我们可以将上面的sql改写为:

declare @a int;
declare @b int;
set @a=10
set @b=0
select @a/nullif(@b,0)
其运行结果自然为null了。

再利用isnull函数,我们就可以实现当@b=0的时候,结果返回1的需求了。最终的sql改写如下:

declare @a int;
declare @b int;
set @a=10
set @b=0
select isnull(@a/nullif(@b,0),1)
OK,两种方法介绍完毕,相对于方法一,我更推荐大家使用方法二,因为方法二的代码更简省。

(如果有朋友对isnull函数不了解的话,这里可以解释一下。
isnull的定义如下:
isnull(参数1,参数2)
其作用就是,当参数1等于null时,就返回参数2的值。)

本文来自:.Net学习网 http://www.lmwlove.com/ac/id729

sql server nullif的使用技巧,除数为零的处理技巧的更多相关文章

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

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

  2. SQL SERVER格式化字符串位数,不足补零

    本文举例在SQLSERVER中将1格式化为001的方法: 1.方法一SQL语句执行如下: ,) as col 2.方法二SQL语句执行如下: ,) ,) as col 下面是C#代码实现方法: ; & ...

  3. sql server中常用方法函数

    SQL SERVER常用函数 1.DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值. (1)语法: DATEADD ( datepart , number, date ) ...

  4. sql 根据日期模糊查询&SQL Server dateTime类型 模糊查询

    曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm: ...

  5. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  6. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  7. SQL SERVER 导出到Oracle 问题与技巧

    工具: 使用SQL SERVER自带的导入, 导出工具   技巧: 一. 使用Oracle Provider for OLE DB(强制推荐) 1. 速度快 2. 要安装Oracle驱动(Oracle ...

  8. sql server小技巧-自动添加时间与主键自增长

    在敲机房收费系统的时候,遇到添加时间的时候总是通过vb端调用当前时间再添到sql server中,期间还有时因为添加时间格式的不统一导致一些小问题,现在才知道原来是自己孤陋寡闻,sql server ...

  9. SQL Server里的 ISNULL 与 NULLIF

    SQL Server 中有两个參数,语法:     ISNULL(check_expression, replacement_value) check_expression 与 replacement ...

随机推荐

  1. 004 ospf

    r0(config)#router ospf 1 OSPF process 1 cannot start. There must be at least one "up" IP i ...

  2. Windows 7 SID 修改

    在安裝Windows系統時會產生一個獨一無二的SID (Security ID),它用來識別每一部主機,若在同一個區域網路內有兩部相同SID的主機,會出現警告訊息.一般而言,每次安裝時的SID不可能會 ...

  3. Android帧动画实现,防OOM,比原生动画集节约超过十倍的资源

    2015年项目接到一个需求,实现一个向导动画,这个动画一共六十张图片,当时使用的是全志A33的开发(512的内存),通过使用Android的动画集实现,效果特别卡顿,然后想到这样的方式来实现,效果非常 ...

  4. 单一责任原则(SRP)

    1.就一个类而言,应该仅有一个引起它变化的原因. 2.在SRP中定义职责为:“变化的原因”.  如果你想到多个动机去改变这个类,那这个类就有多个职责

  5. Linux环境部署(一)

    最近被老大安排了个任务,解决Linux的安装部署问题,特做如下笔记,以便下次安装配置: --------------------Linux上部署项目------------------- 1.解压缩相 ...

  6. 64位win2008下IIS未开启32位支持导致DLL无法加载问题

    部署一个WEB项目,在本机.本地服务器都没有问题,但部署到远程服务器以后,提示有个DLL无法加载: Server Error in '/' Application. Could not load fi ...

  7. YTU 2642: 填空题:类模板---求数组的最大值

    2642: 填空题:类模板---求数组的最大值 时间限制: 1 Sec  内存限制: 128 MB 提交: 646  解决: 446 题目描述   类模板---求数组的最大值    找出一个数组中的元 ...

  8. P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反)

    P1197 [JSOI2008]星球大战(并查集判断连通块+正难则反) 并查集本来就是连一对不同父亲的节点就的话连通块就少一个. 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统 ...

  9. 利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)

    利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全) 14.8 利用JFreeChart生成组合图表  实例位置:光盘\mingrisoft\14\dxyy\02 通过JFree ...

  10. SparkSQL与Hive on Spark

    SparkSQL与Hive on Spark的比较 简要介绍了SparkSQL与Hive on Spark的区别与联系  一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapR ...