当前位置: 代码迷 >> Sql Server >> 搞IT真可怜,都快做到半夜了,5555,一个简单有关问题把小弟我弄迷糊了
  详细解决方案

搞IT真可怜,都快做到半夜了,5555,一个简单有关问题把小弟我弄迷糊了

热度:146   发布时间:2016-04-27 20:28:04.0
搞IT真可怜,,都快做到半夜了,,5555,,,一个简单问题把我弄迷糊了。
就是自加1的问题,转换成numeric後,总就少个0。
----------------------------------------------
declare   @a   char(15),@b   char(15)
select   @a   =   '012345678912345 '
select   @b   =   '012345678912349 '

WHILE   CAST(@a   AS   NUMERIC)   <=   CAST(@b   AS   NUMERIC)
BEGIN  
print   (right( '000000000000000 '+   @a,15))
SELECT   @a   =   CAST(@a   AS   NUMERIC)   +   1
END  


--结果
012345678912345
12345678912346  
12345678912347  
12345678912348  
12345678912349  

就第一条数据开头带0,剩下的都没有,怎么回事?求高手指点!

------解决方案--------------------
declare @a varchar(15),@b varchar(15) --定义为varchar
select @a = '012345678912345 '
select @b = '012345678912349 '

WHILE CAST(@a AS NUMERIC) <= CAST(@b AS NUMERIC)
BEGIN
print (right( '000000000000000 '+ @a,15))
SELECT @a = CAST(@a AS NUMERIC) + 1
END



------解决方案--------------------
declare @a char(15),@b char(15)
select @a = '012345678912345 '
select @b = '012345678912349 '

WHILE @a <[email protected]
BEGIN
print @a
SELECT @a = right( '0000000000000000 '+ ltrim(cast(@a as numeric)+1),15)
END