开发过程中,需要用到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