现在的位置: 首页 > 综合 > 正文

SQL 遇到以零作除数错误的处理

2013年01月22日 ⁄ 综合 ⁄ 共 384字 ⁄ 字号 评论关闭

这样一个情况

select * from a where c>0 and (b/c)>0.5 and (b/c)<0.6

这样一条语句,由于b,c是二个数值列,里面记录的是金额,而c 的话有可能为0,那么这时我们虽然加上了c>0这个条件,却仍有可能 出现 遇到以零作除数错误 这个错误.

解决这个问题,有二种方法,一种是自己加个函数 发觉c=0时,将c改成1 ;如 b/checkdata(c)<0.6

另一种方式 则是使用sqlserver 的选项来禁止出现以零除的错误中断,让而让其为null

set ansi_warnings off
SET ARITHABORT off
SET ARITHIGNORE on

select * from a where c>0 and (b/c)>0.5 and (b/c)<0.6

如果一来,当执行时,遇到某条记录里为0时,则二数相除为null,而null<0.6这个是不成立的,从而达到了作为条件的目的.

抱歉!评论已关闭.