select (case when col2=0 then 0 else col1/col2 end) As col from table ....

解决方案 »

  1.   

    select (case when col2=0 then 1 else col1/col2 end) As col from table ....
      

  2.   

    case when column1=0 then null
    else column2/column1
      

  3.   

    --本例返回col1/col2
    --col2 为除数的列,col1为被除列
    select (case when (col2 > 0 or col2 < 0 ) then col1/col2 else null end) As col from tablename
      

  4.   

    SET ARITHABORT { ON | OFF }注释
    如果 SET ARITHABORT 为 ON,则这些错误情况将导致查询或批处理终止。如果在事务内发生错误,则回滚事务。如果 SET ARITHABORT 为 OFF 并且发生了这些错误之一,则显示一条警告消息,并给算术运算的结果赋以空值。SET ARITHIGNORE { ON | OFF }注释
    SET ARITHIGNORE 设置仅控制是否返回错误信息。不论该设置是什么,Microsoft&reg; SQL Server&#8482; 都将在包含溢出或被零除错误的计算中返回 NULL。可以使用 SET ARITHABORT 设置确定是否终止查询。该设置不影响在 INSERT、UPDATE 和 DELETE 语句执行过程中发生的错误。如果 SET ARITHABORT 或 SET ARITHIGNORE 为 OFF,并且 SET ANSI_WARNINGS 为 ON,则当遇到被零除或溢出错误时,SQL Server 仍返回错误信息。SET ARITHIGNORE 的设置是在执行或运行时设置,而不是在分析时设置。
      

  5.   

    case when col2=0 then 你对除法的处理
         when col2 is null then 你对除法的处理
         when col2<>0 then col1/col2
        end as col_chu