declare @MyTestCursor Cursor
declare @ZYDH char(2)
declare @YXDH char(4)
declare @LQRS char(4) /*录取人数*/
----统计各院校专业队列录取的考生人数
set @MyTestCursor=CURSOR for 
(select YXDH,ZYDH,count(*) 
from view_zyk_jhk_zxyxzyh
where zyzt='1'
group by ZYDH,YXDH)open @MyTestCursor
fetch @MyTestCursor into @YXDH,@ZYDH,@LQRS
while @@FETCH_STATUS=0
begin
----减去录取的人数,得到专业计划数差额数
update t_jhk set JHCGS=JHCGS-@LQRS
 where  t_jhk.YXDH=@YXDH
 and t_jhk.ZYDH=@ZYDH
 
fetch @MyTestCursor into @YXDH,@ZYDH,@LQRS

end
close @MyTestCursor
deallocate @MyTestCursor问题:
我在前面定义的declare @LQRS char(4)是字符型。而另一处
红色标注的地方update t_jhk set JHCGS=JHCGS-@LQRS这里面的
JHCGS是decimal(5,0)。为什么他们可以相减?

解决方案 »

  1.   

    DECLARE @i CHAR(4)='2'
    DECLARE @j DECIMAL(5,2)=345.12SELECT @j-@i --343.12  隐式转换了. 
      

  2.   

    问下:SQL server 中我使用的是char(2)类型,里面存储1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。如果比较大小,或者正序排列为什么不是按照1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16这样的
      

  3.   

    问下:SQL server 中我使用的是char(2)类型,里面存储1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。如果比较大小,或者正序排列为什么不是按照1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16这样的字符是按最前面的开始排的,顺序是1,11,12,13,,,2,21,22,,,
      

  4.   

    问下:SQL server 中我使用的是char(2)类型,里面存储1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。如果比较大小,或者正序排列为什么不是按照1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16这样的排序时转换成数字
      

  5.   

    问下:SQL server 中我使用的是char(2)类型,里面存储1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。如果比较大小,或者正序排列为什么不是按照1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16这样的排序时转换成数字怎么样让它转换成数字还是123456这样子了。不是1,10这种顺序
      

  6.   

    问下:SQL server 中我使用的是char(2)类型,里面存储1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。如果比较大小,或者正序排列为什么不是按照1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16这样的排序时转换成数字怎么样让它转换成数字还是123456这样子了。不是1,10这种顺序order by convert(int, 列)