varchar类型之间可以相减吗?如果不可以,为什么?谢!

解决方案 »

  1.   

    @ItemNoGroup2 = @ItemNoGroup - @ItemNoGroup1
    我的存储过程里有这样一个试子,他们都是varchar类型,执行提示:
    -------------------------------------------------------------------
    服务器: 消息 403,级别 16,状态 1,过程 SP_GS_GM_STOREROOM_D,行 41
    对数据类型而言运算符无效。运算符为 subtract,类型为 varchar。
      

  2.   

    select @ItemNoGroup2 = rtrim(cast(@ItemNoGroup as int) - cast(@ItemNoGroup1 as int))
      

  3.   

    declare @ItemNoGroup as varchar(10),@ItemNoGroup1 as varchar(10),@ItemNoGroup2 as varchar(10)
    set @ItemNoGroup='100'
    set @ItemNoGroup1='19'set @ItemNoGroup2 = cast(@ItemNoGroup as int)- cast(@ItemNoGroup1 as int)print @ItemNoGroup2
      

  4.   

    set @ItemNoGroup2 = cast(@ItemNoGroup as int)- cast(@ItemNoGroup1 as int)
    这个相减后,我想它为空,怎么办?
      

  5.   

    应该是可以的,要转换以后才能计算才有意义。
    如果不转换,也是可以进行相减,但是没有什么意义。
    用convert或cast进行数据转换。
      

  6.   

    设置为空转换成字符''都可以,还是用convert或cast进行数据转换。
      

  7.   

    set @ItemNoGroup2 = cast(@ItemNoGroup as int)- cast(@ItemNoGroup1 as int)
    用这个式子减后是这样的:1-1=0
    可我想要得到:1-1=null,怎么办?
      

  8.   

    declare @r varchar(200),@t varchar(200),@temps varchar(200)set @r='1233dfggdg'
    set @t='33'
    set @temps=stuff(@r,charindex(@t,@r),len(@t),'')
    print @temps
    --结果:12dfggdg
      

  9.   

    用case ..when ....else...end)