我写了一个更新语句, 其中是表中三个字段做比较 取出最大的值后,更新到另一张表里的。现在发现   当字段A为NULL 字段B为数字 字段C为NULL 的时候,更新没反应,没起到效果,这种情况怎么办?NULL不参与数字之间的比较吗?

解决方案 »

  1.   

    比较的时候加上个条件:isnull(B,0)
    这样的话,null值就当0来比较了.
      

  2.   

    -------------------------------------------------------------------------UPDATE t_PANewData SET FPA1109=(case when t_PA_Personal.F_110>t_PA_Personal.F_112 and t_PA_Personal.F_110>t_PA_Personal.F_116 then t_PA_Personal.F_110 when t_PA_Personal.F_112>t_PA_Personal.F_110 and t_PA_Personal.F_112>t_PA_Personal.F_116 then t_PA_Personal.F_112 else t_PA_Personal.F_116  end) from t_PANewData inner join t_PA_Personal on t_PANewData.FEmpID=t_PA_Personal.FItemID LEFT OUTER JOIN t_PA_ItemRef ON t_PA_Personal.FEmpGroupID = t_PA_ItemRef.FItemRefID Where FYear='2011' AND FPeriod='12' AND t_PA_ItemRef.Fname = '正式员工'我是这样写的,怎么加条件呢? 
    -----------------------------------------------------------------------------------------
    UPDATE t_PANewData SET FPA1109=(case when isnull(t_PA_Personal.F_110,0)>isnull(t_PA_Personal.F_112,0) and isnull(t_PA_Personal.F_110,0)>isnull(t_PA_Personal.F_116,0) then isnull(t_PA_Personal.F_110,0) when isnull(t_PA_Personal.F_112,0)>isnull(t_PA_Personal.F_110,0) and isnull(t_PA_Personal.F_112,0)>isnull(t_PA_Personal.F_116,0) then isnull(t_PA_Personal.F_112,0) else isnull(t_PA_Personal.F_116,0)  end) from t_PANewData inner join t_PA_Personal on t_PANewData.FEmpID=t_PA_Personal.FItemID LEFT OUTER JOIN t_PA_ItemRef ON t_PA_Personal.FEmpGroupID = t_PA_ItemRef.FItemRefID Where FYear='2011' AND FPeriod='12' AND t_PA_ItemRef.Fname = '正式员工'这样写对吗? 最后的ELSE  isnull(t_PA_Personal.F_116,0)  end  对吗?
    -------------------------------------------------------------
      

  3.   

    http://blog.csdn.net/maco_wang/article/details/4540882null 不等于 null  
    null is null如果要让null =null 可以用isnull函数。