日期:2014-05-16  浏览次数:20550 次

怎么样将0001441+30*20返回的数为0002041,请各位指教!
如标题所示,我如何才能返回0002041,由于0001441前置零,进行运算后数据默认为数值,保存到表中的数据就成是2041,用转换函数也起不行,请各位赐教,谢谢!
------解决方案--------------------
SELECT LEFT('000'+CAST((0001441+(30*20)) AS VARCHAR),7)

/*
-------
0002041
*/

------解决方案--------------------
试试这个:
select  right('00000'+cast(0001441+30*20 as varchar),7)
/*
0002041
*/

------解决方案--------------------
引用:
您这种在第一位不为0的情况下处理就不行吗?这个号码存在为0的情况,同时了存在不为零的情况,请赐教。


如果第一位为1,这个代码可以:
select  right('00000'+cast(1001441+30*20 as varchar),7)
/*
1002041
*/

------解决方案--------------------
select right(convert(varchar,0001441+30*20+10000000),7)
------解决方案--------------------
SELECT RIGHT(10000000+0001441+30*20,7)

------解决方案--------------------
引用:
您这种在第一位不为0的情况下处理就不行吗?这个号码存在为0的情况,同时了存在不为零的情况,请赐教。

号码不为0也一样的,你可以自己试一下啊,反正select又不影响
------解决方案--------------------
为什么不把数据类型设置成varchar(n)的呢?如果是纯数字,varchar(n)和int 是可以互转的啊