SQL SERVER自动在前面补0满足10位请问怎么写?

SELECTright(cast('000000000'+convert(int,code)asvarchar(20)),10),code,id,pydate,isnul... SELECT
right(cast('000000000'+convert(int,code)as varchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0
FROM zlemployee

工号的类型是INT的,请问为什么用ID就可以呢?为什么用CODE就不行了?
已经搞定了,一定在临时表中char转int,不能直接转
展开
 我来答
micro0369
2014-04-20 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:3993万
展开全部

咱们来看:

cast('000000000'+convert(int,code)as varchar(20))

首先:

convert(int,code) :你把code 转为 int

然后

'000000000'+convert(int,code)我估计sqlserver肯定把表达式作为数字相加了,那么0000...的相加就没有作用了。

最后

就不是你要的结果了。


大致应该这样:

SELECT 
right(cast('000000000'+rtrim(code) as varchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0 
   FROM zlemployee
17号观察室
2014-04-20 · TA获得超过5730个赞
知道大有可为答主
回答量:3666
采纳率:66%
帮助的人:1341万
展开全部
在前面补零的啊 那么这个列的数据类型就是字符串了
如果列已经是字符串了,假如自动是col 那么就这样写: lpad函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上帝的帝2
2014-04-20 · 超过33用户采纳过TA的回答
知道答主
回答量:256
采纳率:0%
帮助的人:114万
展开全部
这SQL.....sqlserver没有类似于oracle的lpad的函数么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SQL的艺术
2014-04-19 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3323

向TA提问 私信TA
展开全部
你的表结构设计有问题。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式