天天看点

SQL循环26个字母插入到一个表中

开发过程中,需要用到26个字母的一个临时表,一开始想到的方法如下(sql server 2008 r2执行):

SQL循环26个字母插入到一个表中
SQL循环26个字母插入到一个表中

代码

if object_id('#tempdriveinfo') is not null

        drop table #tempdriveinfo

    create table #tempdriveinfo 

     (   

        [driveinfoid] tinyint identity primary key not null,

        [drivename] nvarchar(10)    

     )  

     insert into  #tempdriveinfo ([drivename]) values('a'),('b'),('c'),('d'),('e'),('f'),('g'),('h'),('i'),('j'),('k'),('l'),('m'),('n'),('o'),('p'),('q'),('r'),('s'),('t'),('u'),('v'),('w'),('x'),('y'),('z')

     select * from #tempdriveinfo  

上面这个方法,虽然没有什么问题,但始终觉得不好,还是想到sql server的char()函数,把insert语句改了:

SQL循环26个字母插入到一个表中
SQL循环26个字母插入到一个表中

insert into  #tempdriveinfo ([drivename]) values (char(65)),(char(66)),(char(67)),(char(68)),(char(69)),(char(70)),(char(71)),(char(72)),(char(73)),(char(74)),(char(75)),(char(76)),(char(77)),(char(78)),(char(79)),(char(80)),(char(81)),(char(82)),(char(83)),(char(84)),(char(85)),(char(86)),(char(87)),(char(88)),(char(89)),(char(90))

经上面的修改,可以实现相同的结果,还是觉得它很繁杂一样,不够简洁,想到它是连续性,想到使用循环方法。

SQL循环26个字母插入到一个表中
SQL循环26个字母插入到一个表中

declare @firstcapitalletters int = 65     

while @firstcapitalletters <= 90

begin

    insert into  #tempdriveinfo ([drivename]) values (char(@firstcapitalletters))

    set @firstcapitalletters = @firstcapitalletters + 1

end