システムテーブルmaster..spt_valuesの目的は何ですか?
なぜ提供されたのか、どのように使用するのか
そのタイプ、低値、高値の意味は何ですか?
更新:
Google検索は、たとえば次のように数千の「その用途」を提供します。
「説明する価値はありません。このテーブルは、「スーパー」ルックアップテーブルの設計上の悪夢です」
SQL Serverの将来のバージョンで削除できるため、一部の投稿では使用を警告していますが、新しいSQL Server 11(Denali)の新機能を説明するためにコードスクリプトを既に使用しています。
spt_values
テーブルは、SQL Serverのドキュメントには記載されていませんが、Sybaseの時代にさかのぼり、Sybaseオンラインドキュメントには、このコメントで要約できる 極めて最小限のドキュメント があります。
使用方法を確認するには、sp_helptextを実行し、それを参照するシステムプロシージャの1つのテキストを調べます。
言い換えれば、コードを読んで自分で解決してください。
システムストアドプロシージャを調べて、テーブルデータ自体を調べると、テーブルが(とりわけ)コードを読み取り可能な文字列に変換するために使用されることは明らかです。または、上記のリンクされたSybaseのドキュメントにあるように、「内部システム値を人間が読める形式に変換するために」
この表は、MSDNブログのコードスニペットでは 使用されることもあります ですが、正式なドキュメントでは決してありません。通常、数値のリストの便利なソースとして使用されます。しかし elsewhere で説明したように、独自の数値ソースを作成することは、文書化されていないシステムテーブルを使用するよりも安全で信頼性の高いソリューションです。 SQL Server自体に「適切な」文書化された数値テーブルを提供するための 接続要求 もあります。
とにかく、テーブルは完全に文書化されていないので、少なくとも実用的な観点から、それについて何かを知ることには大きな価値はありません。次のサービスパックまたはアップグレードはそれを完全に変えるかもしれません。知的好奇心はもちろん別のものです:-)
別の質問 で大部分が回答されました。
そのタイプ、低値、高値の意味は何ですか?
ほとんどのタイプ(つまり、特定のルックアップテーブルが個別の場合)には、名前または番号のいずれかが必要です。一部のタイプには、低列と高列も必要です。 SybaseにはErrorNumber列があるため、sprocはハードコーディングされていないRAISERRORを実行できます(バージョンの変更など)。
列挙されたリストがあなたにとって「暗号」でない限り、「暗号」ではありません。これは単なるルックアップテーブルです(それらはすべて、Type列によって区別されます)。
主な使用法ではなく、1つの使用法は、一連の数値を生成することです。
--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