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

null的问题
set   @str= 'update   '+@type+ 'money   set   servicedate= '+cast(@servicedate   as   varchar)+ '   where   id= '+cast(@id   as   varchar)

@servicedate有时候为null,,,


这个@str   就为null,,咋整



------解决方案--------------------
set @str= 'update '+@type+ 'money set servicedate= '+cast(isnull(@servicedate, ' ') as varchar)+ ' where id= '+cast(@id as varchar)

@servicedate有时候为null,,,


这个@str 就为null,,咋整
------解决方案--------------------
isnull(@servicedate, ' ')
------解决方案--------------------
set @str= 'update '+@type+ 'money set servicedate=isnull( '+cast(@servicedate as varchar)+ ', ' ' ' ') where id= '+cast(@id as varchar)

------解决方案--------------------
不能是 ' '?
为null,楼主想要怎样的结果
------解决方案--------------------
isnull(@servicedate, 'null ')
------解决方案--------------------
没有单引号
------解决方案--------------------
set @str= 'update '+@type+ 'money set servicedate=isnull( '+cast(@servicedate as varchar)+ ',servicedate) where id= '+cast(@id as varchar)
为null是不更新--以上为
------解决方案--------------------
isnull为用值为null的更换为其它值:
ISNULL
使用指定的替换值替换 NULL。

语法
ISNULL ( check_expression , replacement_value )

参数
check_expression

将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。

replacement_value

在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。

返回类型
返回与 check_expression 相同的类型。


------解决方案--------------------
你判断一下它是否为null,然后set servicedate=null不就行了吗?

if @servicedate is null
begin
set @str= 'update '+@type+ 'money set servicedate=null '+ ' where id= '+cast(@id as varchar)
end
else
set @str= 'update '+@type+ 'money set servicedate= '+cast(@servicedate as varchar)+ ' where id= '+cast(@id as varchar)
------解决方案--------------------
isnull(@servicedate, ' ')