我想用SQL(sql2008)中的Tally表创建一堆数据,肯定需要帮助。
首先,我有这个包含2列的表。
{
AcctNum (nchar(30), null),
DataInfo (nchar(745), null)
}
虽然我不关心DataInfo列中的数据,但我确实想在表中添加大约10k的行,每行都有唯一的AcctNum。
问题是我需要在两列中保持数据的长度。例如,AcctNum列看起来像" 400000000000001"。如何在保留"空格"?
的同时增加数字不确定我在这里是否有道理,但请告诉我,我会尝试解释更多,谢谢!
答案 0 :(得分:2)
使用递归公用表表达式:
-- set up a table variable for demo purpose
declare @t table (AcctNum nchar(30) null, DataInfo nchar(745) null);
-- insert the starting value
insert @t values ('400000000000001', null);
-- run the cte to generate the sequence
with cte (acctnum, num) as (
select acctnum, cast(acctnum as bigint) + 1 num -- starting value
from @t
union all
select acctnum, num+1 from cte
where num < cast(acctnum as bigint) + 10000 -- stopping value
)
-- insert data sequence into the table
insert @t (AcctNum, DataInfo)
select num, null from cte
option (maxrecursion 10000);
select * from @t;
表变量 @t 现在将包含acctnum 400000000000001 - &gt; 400000000010001作为连续序列。