set @str='update '+@type+'money set servicedate='+cast(@servicedate as varchar)+' where id='+cast(@id as varchar)@servicedate有时候为null,,,
这个@str 就为null,,咋整

解决方案 »

  1.   

    set @str='update '+@type+'money set servicedate='+cast(isnull(@servicedate,'') as varchar)+' where id='+cast(@id as varchar)@servicedate有时候为null,,,
    这个@str 就为null,,咋整
      

  2.   

    isnull(@servicedate,'')    这样不行,,,,哪个字段的值就得是null,,不能是''
      

  3.   

    set @str='update '+@type+'money set servicedate=isnull('+cast(@servicedate as varchar)+','''') where id='+cast(@id as varchar)
      

  4.   

    不能是''?
    为null,楼主想要怎样的结果
      

  5.   

    set @str='update '+@type+'money set servicedate=isnull('+cast(@servicedate as varchar)+',servicedate) where id='+cast(@id as varchar)
    为null是不更新--以上为
      

  6.   

    set @str='update '+@type+'money set servicedate=isnull('+cast(@servicedate as varchar)+',servicedate) where id='+cast(@id as varchar)如果是这样的话,,,以前servicedate有值哪就不会改成null了
      

  7.   

    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 相同的类型。
      

  8.   

    你判断一下它是否为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)
      

  9.   

    东雷你的办法是行,,但是这个表里有狠多字段。。我不想这样挨个 is null,,挨个组合这个@str