你最好是用iif函数IIf
返回由逻辑测试确定的两个数值或字符串值之一。语法
数字
IIf(«Logical Expression», «Numeric Expression1», «Numeric Expression2»)如果 «Logical Expression» 取值为 TRUE,则此函数返回 «Numeric Expression1»,否则,返回 «Numeric Expression2»。比如:
select field1/iif(field2=0,1,field2) as avg_value from tablename

解决方案 »

  1.   

    select A.e/iif(A.f=0,1,A.f) as avg_value from a
      

  2.   

    我写了一个自定义函数
    比较好使 可用在多数地方CREATE FUNCTION isfmling (@fz float ,@fm float)  
    RETURNS   float  AS  
    BEGIN 
    declare @lg float 
    if @fm =0
    set @lg = null
    else 
    set @lg=@fz/@fm
    return @lg
    END
    你要零就set @lg=0
    使用时dbo.isfmling(@fz,@fm)也可以是字段名
      

  3.   

    update a
    set g=case when f=0 then 0 else e/f end 
      

  4.   

    SET ANSI_WARNINGS OFF
    SET ARITHIGNORE OFFUPDATE a SET g=ISNULL(e/f,0)這樣就好了
      

  5.   

    update a
    set g=isnull(e/nullif(f,0),0)
    使用nullif函數,如果有f=0則置為null,除數為null則結果為null,再用isnull函數將其置0.
    說明:如果有大量數據不推薦使用此法。可使用  Yang_ 的方法。