系统表 master... spt_value 的目的是什么? 它的值的含义是什么?

系统表 master... spt _ value 的用途是什么?
为什么要提供它,应该如何使用它?

它的类型、低值、高值的含义是什么?

更新:
谷歌搜索提供了数以千计的“用途”,例如:

一些帖子警告不要使用它,因为它可以在未来版本的 SQLServer 中删除,但是已经有代码脚本使用它来说明新的 SQLServer11(Denali)的新特性:

81356 次浏览

SQL Server 文档中没有提到 spt_values表,但它可以追溯到 Sybase 时代,Sybase 在线文档中有一些 极少的文件,可以在下面的注释中总结:

若要查看如何使用它,请执行 sp _ help text 并查看 引用它的系统过程之一。

In other words, read the code and work it out for yourself.

如果查看系统存储过程并检查表数据本身,那么很明显,该表用于将代码转换为可读的字符串(以及其他用途)。或者正如上面链接的 Sybase 文档所说,“将内部系统值[ ... ]转换为人类可读的格式”

在 MSDN 博客的代码片段中,该表也是 有时会用到,但从未在正式文档中使用过,通常作为数字列表的方便来源。但是,正如讨论的 其他地方,创建您自己的数字来源是一个比使用未记录的系统表更安全和更可靠的解决方案。甚至还有 连接请求在 SQLServer 本身中提供一个“适当的”、文档化的数字表。

无论如何,该表是完全没有文档的,所以了解它没有任何重要价值,至少从实际的角度来看是这样的: 下一个服务包或升级可能会完全改变它。当然,对知识的好奇心是另一回事: -)

大部分是用 另一个问题回答的。

它的类型、低值、高值的含义是什么?

大部分类型(即。每个特定的查找表(如果它们是独立的)都需要 Name 或 Number。有些类型还需要 Low 和 High 列。在 Sybase 中,我们有一个 ErrorNumber 列,因此 sproc 可以 RAISERROR,它不是硬编码的(可以通过版本等进行更改)。

除非枚举列表对您来说是“神秘的”,否则它不是“神秘的”; 它只是一个查找表(所有这些表都由 Type 列区分)。

其中一种用法(肯定不是主要用法)是生成一系列数字:

--Generate a series from 1 to 100
SELECT
TOP 100
ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNum
FROM master.dbo.spt_values ORDER BY RowNum