我写了一SQL的百分比计算语句
select   cast(left(round((cast(line.qty_shipped_conv as float)/line.qty_rec)*100,2),5)as varchar) as ff  
  FROM grn_line line错误提示: 消息 8134,级别 16,状态 1,第 1 行 Divide by zero error encountered.请问如何更新这语句为正确语句?

解决方案 »

  1.   

    分母不能为0select  cast(left(round((cast(line.qty_shipped_conv as float)/nullif(line.qty_rec,0))*100,2),5)as varchar) as ff 
      FROM grn_line line 
      

  2.   


    select  cast((round((cast(line.qty_shipped_conv as float)/nullif(line.qty_rec,0))*100,2))as varchar)+'%' as ff 
      

  3.   


    NULLIF
    如果两个指定的表达式相等,则返回空值。语法
    NULLIF ( expression , expression )参数
    expression常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组合。返回类型
    返回类型与第一个 expression 相同。如果两个表达式不相等,NULLIF 返回第一个 expression 的值。如果相等,NULLIF 返回第一个 expression 类型的空值。