如何得出以下字符串,请帮忙,谢谢
create table #tmp(
nian smallint not null,
yue smallint not null,
autoinc int not null)
insert #tmp
select 2012,9,1
union all
select 2012,9,11
union all
select 2012,9,111
union all
select 2012,9,1111
union all
select 2012,10,222
union all
select 2012,10,22222
union all
select 2012,10,222222
------如何从#tmp表中得出以下结果(字符型)
2012090000001
2012090000011
2012090000111
2012090001111
2012100000222
2012100022222
2012100222222
create table #tmp(
nian smallint not null,
yue smallint not null,
autoinc int not null)
insert #tmp
select 2012,9,1
union all
select 2012,9,11
union all
select 2012,9,111
union all
select 2012,9,1111
union all
select 2012,10,222
union all
select 2012,10,22222
union all
select 2012,10,222222
SELECT CAST(nian AS varchar) + --年
CASE WHEN yue >= 1 AND yue <=9
THEN '0' + CAST(yue AS varchar)
ELSE CAST(yue AS varchar)
END + --月
CASE WHEN len(CAST(autoinc AS VARCHAR)) < ( SELECT max(len(CAST(autoinc AS varchar)))
FROM #tmp) --求autoinc的最大长度
THEN '0' + replicate('0',
(SELECT max(len(CAST(autoinc AS varchar))) FROM #tmp) - len(CAST(autoinc AS VARCHAR))
) --重复字符0
+ CAST(autoinc as varchar)
ELSE '0' + CAST(autoinc AS varchar)
END
FROM #tmp
/*
2012090000001
2012090000011
2012090000111
2012090001111
2012100000222
2012100022222
2012100222222
*/
create table #tmp( nian smallint not null, yue smallint not null, autoinc int not null) insert #tmp select 2012,9,1 union ALL
select 2012,9,11 union ALL
select 2012,9,111 union ALL
select 2012,9,1111 union ALL
select 2012,10,222 union ALL
select 2012,10,22222 union ALL
select 2012,10,222222
SELECT CONVERT(varchar(20),nian)+
replace(space(2-len(CONVERT(varchar(20),yue)))+CONVERT(varchar(20),yue),' ','0')
+replace(space(7-len(CONVERT(varchar(20),autoinc)))+CONVERT(varchar(20),autoinc),' ','0')
FROM #tmp
CREATE TABLE #tmp
(
nian SMALLINT NOT NULL ,
yue SMALLINT NOT NULL ,
autoinc INT NOT NULL
)
INSERT #tmp
SELECT 2012 ,
9 ,
1
UNION ALL
SELECT 2012 ,
9 ,
11
UNION ALL
SELECT 2012 ,
9 ,
111
UNION ALL
SELECT 2012 ,
9 ,
1111
UNION ALL
SELECT 2012 ,
10 ,
222
UNION ALL
SELECT 2012 ,
10 ,
22222
UNION ALL
SELECT 2012 ,
10 ,
222222
SELECT CONVERT(CHAR(4),nian ) +CASE WHEN LEN(yue)=1 THEN '0'+CONVERT (CHAR(1),yue ) ELSE CONVERT (CHAR(2),yue ) END+RIGHT('000000'+convert(varchar(6),autoinc),6)
FROM #tmp
/*
------------------
201209000001
201209000011
201209000111
201209001111
201210000222
201210022222
201210222222
(7 行受影响)
*/
CREATE TABLE #tmp
(
nian SMALLINT NOT NULL ,
yue SMALLINT NOT NULL ,
autoinc INT NOT NULL
)
INSERT #tmp
SELECT 2012 ,
9 ,
1
UNION ALL
SELECT 2012 ,
9 ,
11
UNION ALL
SELECT 2012 ,
9 ,
111
UNION ALL
SELECT 2012 ,
9 ,
1111
UNION ALL
SELECT 2012 ,
10 ,
222
UNION ALL
SELECT 2012 ,
10 ,
22222
UNION ALL
SELECT 2012 ,
10 ,
222222
SELECT CONVERT(CHAR(4),nian)+CASE WHEN LEN(yue)=1 THEN '0'+CONVERT (CHAR(1),yue ) ELSE CONVERT (CHAR(2),yue ) END +LEFT(CONVERT(VARCHAR(12),autoinc)+'000000',6)
FROM #tmp
/*
------------------
201209100000
201209110000
201209111000
201209111100
201210222000
201210222220
201210222222
(7 行受影响)
*/