怎么个不可以,是不是你的@listid有非数字的字符

解决方案 »

  1.   

    用SELECT@listid_d int
    @num int
    @listid char(11)SELECT @listid_d = CAST( @listid AS int ) + @num
    SELECT @listid = cast(@listid_d as char)
      

  2.   

    set @listid = cast(@listid_d as char)
    ----->
    set @listid = cast(@listid_d as char(11))
      

  3.   

    你的@listid是CHAR类型的,要去空格
    @listid_d int
    @num int
    @listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num
    SELECT @listid = cast(@listid_d as char)
      

  4.   

    你的@listid是CHAR类型的,要去空格
    @listid_d int
    @num int
    @listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num
    SELECT @listid = cast(@listid_d as char)
      

  5.   

    你的@listid是CHAR类型的,要去空格
    @listid_d int
    @num int
    @listid char(11)SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num
    SELECT @listid = cast(@listid_d as char)
      

  6.   

    @listid_d int
    @num int
    @listid char(11)set @listid_d = CAST( trim(@listid) AS bigint ) + @num
    set @listid = cast(@listid_d as char(11))
      

  7.   

    要先赋值,然后再转换,不要有NULL。
      

  8.   

    to gzhughie(hughie) 的确可以那样写
    但好像你少了from
    如果光是select 运行会有错的!SELECT @listid_d = CAST( RTRIM(LTRIM(@listid)) AS int ) + @num  from
    xxxxx
    SELECT @listid = cast(@listid_d as char) from xxxxx我的愚见!
      

  9.   

    TO zhdleo(叮东) 
    SQL中SELECT的用途很广,如付值、计算等等,不象ORACLE,还需要虚拟表DUAL,在SQL中付值最好用SELECT,用SET会有限制的。
      

  10.   

    up,
    今天我也作了个类似的trigger,
    在实现部分,也是个运算赋值,用的是select,
    里面都有表的别名了,但还是要我在后面加上了个from table_name没有,就不能运行通过呀!
      

  11.   

    具个例子:
    as
    declare @new_avg int
    if update(grade1)
    begin
    select @new_avg=(inserted.grade1+inserted.grade2)/2.0  ******
    update Stu_grade
    set av_grade=@new_avg
    where Stu_grade.Stu_id=inserted.Stu_id
    end******初没有from inserted
    运行就是不能通过,加上了就可以,而且完成了所需的要求。你说呢???