34,606
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
select *
from master..spt_values
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,0 ,'P ' ,1 ,0x00000001 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,1 ,'P ' ,1 ,0x00000002 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,2 ,'P ' ,1 ,0x00000004 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,3 ,'P ' ,1 ,0x00000008 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,4 ,'P ' ,1 ,0x00000010 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,5 ,'P ' ,1 ,0x00000020 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,6 ,'P ' ,1 ,0x00000040 ,0)
insert spt_values (name ,number ,type ,low ,high ,status) values (null ,7 ,'P ' ,1 ,0x00000080 ,0)
go
-- 'P ' continued....
declare
@number_track integer
,@char_number_track varchar(12)
select @number_track = 7
select @char_number_track = convert(varchar,@number_track)
-- max columns is 1024 so we need 1024 bit position rows;
-- we'll actually insert entries for more than that
while @number_track < 1024
begin
raiserror('type=''P '' ,@number_track=%d' ,0,1 ,@number_track)
EXECUTE(
'
insert spt_values (name ,number ,type ,low ,high ,status)
select
null
,(select max(c_val.number)
from spt_values c_val
where c_val.type = ''P ''
and c_val.number between 0 and ' + @char_number_track + '
)
+ a_val.number + 1
,''P ''
,(select max(b_val.low)
from spt_values b_val
where b_val.type = ''P ''
and b_val.number between 0 and ' + @char_number_track + '
)
+ 1 + (a_val.number / 8)
,a_val.high
,0
from
spt_values a_val
where
a_val.type = ''P ''
and a_val.number between 0 and ' + @char_number_track + '
')
select @number_track = ((@number_track + 1) * 2) - 1
select @char_number_track = convert(varchar,@number_track)
end --loop
go
select number from master..spt_values where type='p'
--这样查询一下就知道什么意思了