你最好是用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
返回由逻辑测试确定的两个数值或字符串值之一。语法
数字
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
比较好使 可用在多数地方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)也可以是字段名
set g=case when f=0 then 0 else e/f end
SET ARITHIGNORE OFFUPDATE a SET g=ISNULL(e/f,0)這樣就好了
set g=isnull(e/nullif(f,0),0)
使用nullif函數,如果有f=0則置為null,除數為null則結果為null,再用isnull函數將其置0.
說明:如果有大量數據不推薦使用此法。可使用 Yang_ 的方法。