如果我在 SQL Server 中编写:
SELECT number FROM master..spt_values WHERE Type = 'P' ORDER BY Number
我得到了一个我已经可以使用的序号列表,而不是写一个带有序号的表。
这对于小型连接、行编号等非常有帮助。
我想知道是否还有其他像这样的隐藏表也可以帮助我做其他事情?例如,我可能想要select someNonImportantTextColmn from master..unknown
并应用我的功能。
我在哪里可以找到这些“帮助表”的完整列表?
spt_values
不完全是供您使用的帮助表。它是内部存储过程用于各种任务的未记录的系统表。因为它既不包含唯一的也不包含连续的数字,并且因为它没有记录和不受支持(并且可能会在未来的版本中消失),我强烈建议您不要将此表用于任何事情。
您始终可以根据已
row_number
记录和受支持的系统视图(例如sys.all_objects
、 )生成序列sys.all_columns
,或者如果您需要大量数据,则可以将两者交叉连接。或者只是建立一个
Numbers
表并为自己存储数字。在大多数情况下这可能更有效,因为如果您使用它足够多,它将始终在内存中访问而无需计算序列。