天天看點

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