開發過程中,需要用到26個字母的一個臨時表,一開始想到的方法如下(sql server 2008 r2執行):
代碼
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語句改了:
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))
經上面的修改,可以實作相同的結果,還是覺得它很繁雜一樣,不夠簡潔,想到它是連續性,想到使用循環方法。
declare @firstcapitalletters int = 65
while @firstcapitalletters <= 90
begin
insert into #tempdriveinfo ([drivename]) values (char(@firstcapitalletters))
set @firstcapitalletters = @firstcapitalletters + 1
end