如何使用01到ZZ的所有字母和数字组合填充表格?

时间:2013-05-17 17:02:27

标签: sql-server-2008

我有tableA (ID INT Identity(1,1) , Name VARCHAR(2))

我希望使用name01的{​​{1}}值填充表格:01,02,03,04。 A1,A2,A3,.. Z1,Z2 ..

每个价值都是不同的。

2 个答案:

答案 0 :(得分:3)

我认为这就是你要找的东西(你总是可以使用WHERE子句过滤掉你不想要的任何组合):

with characters as
(
select c = char(number) from master..spt_values
where type = 'P' and number between 48 and 57 or number between 65 and 90
)
insert into dbo.tableA ([name])
select
    c1.c + c2.c
from
    characters c1
    cross join characters c2
where
    c1.c + c2.c <> '00'

请注意,在生产代码中使用spt_valuesnot recommended;更好的解决方案是使用您自己的numbers table。如果name应始终为“distinct”,则可能需要向列中添加唯一约束(如果尚未添加)。

答案 1 :(得分:1)

DECLARE @chars varchar(36)
set @chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

DECLARE @i1 int = 1
DECLARE @i2 int = 2

WHILE @i1 < LEN(@chars)
BEGIN
    WHILE @i2 < LEN(@chars)
    BEGIN
        INSERT tableA(Name) VALUES (SUBSTRING(@chars, @i1, 1) + SUBSTRING(@chars, @i2, 1))
        SET @i2 += 1
    END
    SET @i1 += 1
    SET @i2 = 1
END