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,,咋整
set @str='update '+@type+'money set servicedate=isnull('+cast(@servicedate as varchar)+','''') where id='+cast(@id as varchar)
不能是''? 为null,楼主想要怎样的结果
set @str='update '+@type+'money set servicedate=isnull('+cast(@servicedate as varchar)+',servicedate) where id='+cast(@id as varchar) 为null是不更新--以上为
set @str='update '+@type+'money set servicedate=isnull('+cast(@servicedate as varchar)+',servicedate) where id='+cast(@id as varchar)如果是这样的话,,,以前servicedate有值哪就不会改成null了
你判断一下它是否为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)
东雷你的办法是行,,但是这个表里有狠多字段。。我不想这样挨个 is null,,挨个组合这个@str
这个@str 就为null,,咋整
为null,楼主想要怎样的结果
为null是不更新--以上为
ISNULL
使用指定的替换值替换 NULL。语法
ISNULL ( check_expression , replacement_value ) 参数
check_expression将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。replacement_value在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。 返回类型
返回与 check_expression 相同的类型。
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)