master..spt_values表的作用是什么,几个字段的含义是什么,谁能讲讲呢?

aaabbb09 2011-02-10 08:19:13
master..spt_values表的作用是什么,几个字段的含义是什么,谁能讲讲呢?


select *
from master..spt_values


我实在找不到,对这个表作用的说明文档。
...全文
4594 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
minqin 2013-07-16
  • 打赏
  • 举报
回复
yuanlairuci
mbugaifc 2012-05-12
  • 打赏
  • 举报
回复
学习了,谢谢。 刚好解决了我一个问题。
  • 打赏
  • 举报
回复
thanks for your sharing
oO寒枫Oo 2011-02-10
  • 打赏
  • 举报
回复
spt_values 是一张常量表
oO寒枫Oo 2011-02-10
  • 打赏
  • 举报
回复
master..spt_values 相当于 master.dbo.spt_values

master 是数据库名
spt_values是表名
华夏小卒 2011-02-10
  • 打赏
  • 举报
回复
可以到安装文件里搜索 u_tables.sql 文件查看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
daishaodong 2011-02-10
  • 打赏
  • 举报
回复
我的sql2000也只有255
aaabbb09 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wxf163 的回复:]

相对固定通用的取数字的表
主要作用就是取连续数字
不过有个缺陷就是只能取到2047

技术内幕系列丛书里面有介绍
[/Quote]
我的为何只能到255呢,语版本有关吗?
华夏小卒 2011-02-10
  • 打赏
  • 举报
回复
我的服务器中,这些表被谁秒的了,正在用u_tables.sql恢复。
-晴天 2011-02-10
  • 打赏
  • 举报
回复
这个表貌似是从DB2借用过来的,它存储了一些系统存储过程运行所需要的数据取值范围以前当前值,这个表共有名称,值,类型,最小,最大,状态等六个列,一个约束,一个聚集索引和一个非聚集索引.
网上找不到这个表结构所代表的含义,但从表的数据值来看,可以猜出一些来,比如,类型为B,那就应该是布尔型,它的名称和取值有四种,yes or no,no,yes,none.又如类型I似乎是与索引有关的一些数据名.你也可以通过名称及值的范围来猜出一些.
自然数序列0~2047的name为NULL,类型为p,猜不出这个p对应什么英文单词,或许在某个系统存储过程中要用它自然数序列,或许就是对应的这个存储过程名吧.
系统表中的东西,有些是要弄清楚的,而像spt_values这个表,联机丛书中都没有给出说明,那就是说它并不要求你知道它,我们只要知道能拿它来引用(比如类型p的数字序列)就足够了,而且,建议你不要试图去更改这个表的内容,否则可能会出现无法意料的后果.
王向飞 2011-02-10
  • 打赏
  • 举报
回复
相对固定通用的取数字的表
主要作用就是取连续数字
不过有个缺陷就是只能取到2047

技术内幕系列丛书里面有介绍
飘零一叶 2011-02-10
  • 打赏
  • 举报
回复
master..spt_values相当于一个数字辅助表,在sql中主要用到number这个字段。
select number from master..spt_values where type='p'
--这样查询一下就知道什么意思了



aaabbb09 2011-02-10
  • 打赏
  • 举报
回复
网上查的,
spt_values存储的是sybase的系统值。

可是,我的数据库是 sql server2000呀。
coleling 2011-02-10
  • 打赏
  • 举报
回复
该表是从sybase继承过来的,是个内部字典表,供SQL Server内部使用。
我们可以在许多系统存储过程和函数的源代码中发现它的身影。其实可以将它理解成我们编程时常用的数据字典.

列名分别为名称、值、类型、下限、上限、状态;

类型列的取值含义:
D=Database Option P=Projection DBR=Database Role DC=Database Replication I=Index L=Locks V=Device Type
因为比较多,无法一一列举。其中类型P较为特殊,它只是0-2047(与版本有关)之间的数字的简单列表,作为对所有类型之间关系的预测。
kevin_long 2011-02-10
  • 打赏
  • 举报
回复
这个是系统表 用处不太大吧。

34,606

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧