我有tableA (ID INT Identity(1,1) , Name VARCHAR(2))
我希望使用name
到01
的{{1}}值填充表格:01,02,03,04。 A1,A2,A3,.. Z1,Z2 ..
每个价值都是不同的。
答案 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_values
为not 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