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,不能直接转 展开
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,不能直接转 展开
4个回答
展开全部
咱们来看:
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
展开全部
在前面补零的啊 那么这个列的数据类型就是字符串了
如果列已经是字符串了,假如自动是col 那么就这样写: lpad函数
如果列已经是字符串了,假如自动是col 那么就这样写: lpad函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这SQL.....sqlserver没有类似于oracle的lpad的函数么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的表结构设计有问题。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询