文書化されていないステータスにもかかわらず、master..spt_values は、Microsoft SQL Server のシステム プロシージャがさまざまな機能を効果的に実行できるようにする貴重なテーブルです。これには、データ型、ロール、その他のメタデータのルックアップ値を含む、これらのシステム プロシージャで使用される参照テーブルと投影データのコレクションが含まれています。
Type = 'P' は、master..spt_values 内の射影テーブルを意味します。このテーブルには、データの投影または走査を実行するために使用できる 0 から 2047 までの連続した数値が含まれています。
master..spt_values に保存されている生データは、ユーザーによる直接使用を目的としていませんクエリ。ただし、その射影機能は、単一列内のデータを分割する場合に特に役立ちます。
SELECT RIGHT(LEFT(T.col4,Number-1), CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1)))) FROM master..spt_values, table1 T WHERE Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND (SUBSTRING(T.col4,Number,1) = ',' -- OR SUBSTRING(T.col4,Number,1) = '') --this does not work correctly anyway
このシナリオでは、クエリは spt_values テーブル (Type = 'P') を反復処理し、数値シーケンスを使用して、分割操作。カンマ区切りリスト内の各値を効果的に分離し、結果セットに個別の行を作成します。
以上がSQL Server で効率的な列分割に master..spt_values を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。