日期:2014-05-19  浏览次数:20395 次

有点怪的问题……
update   a   set   a.fprovince=(case   a.fprovince   when   ' '   then   isnull(b.fprovince, '   ')   end)   from   tb_cl   a,tb_kh   b   where   a.fkhh=b.fkhh

因为表tb_cl中province默认是not   null,而tb_kh中默认是null,所以在update时假如tb_kh中有空值的province,出现下面的提示:

服务器:   消息   515,级别   16,状态   2,行   1
无法将   NULL   值插入列   'fprovince ',表   'svw.dbo.tb_cl ';该列不允许空值。UPDATE   失败。
语句已终止。

但是在语句中我已经用isnull来判断了,没有直接给它赋值。
而这样用却可以:
update   a   set   a.fprovince=isnull(b.fprovince, '   ')   from   tb_cl   a,tb_kh   b   where   a.fkhh=b.fkhh

请高手帮忙指点下上面那句错在哪里???

------解决方案--------------------
update a set a.fprovince=(case a.fprovince when ' ' then isnull(b.fprovince, ' ')
else a.fprovince
end) from tb_cl a,tb_kh b where a.fkhh=b.fkhh