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, ' ')