Master..spt_values は Microsoft SQL Server のシステム テーブルです。システム ストアド プロシージャで使用されるさまざまなルックアップ テーブルと射影テーブルが含まれています。数値、ビットマスク、およびその他の一般的に必要な値の事前定義されたシーケンスを提供することで、効率的なデータ操作が可能になります。
ルックアップ テーブルを使用すると、ロック タイプを数値から名前に変換するなど、数値を対応する文字列表現に拡張できます。 。一方、射影テーブルは、値の範囲を反復処理する方法を提供し、列を複数の行に分割する場合に便利です。
master に「P」と入力します。spt_values は射影テーブルを示します。 これには、0 から 2047 までの一連の連続した数字が含まれています。このテーブルにより、カウントや集計など、さまざまな操作を通じて一連の値を効率的に投影します。
master..spt_values を使用する の利点CSV 列を分割するための (タイプ "P") は、そのパフォーマンスと効率にあります。 SQL Server は、事前に計算された数値シーケンスを利用することで、シーケンスが動的に生成された場合に必要となる一時テーブルの作成と挿入を回避できます。これにより、列分割操作を実行するクエリの実行速度が大幅に向上します。
問題のコードは、master..spt_values:
SELECT T.col1, 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
以上がmaster..spt_values が SQL Server でカンマ区切り値を効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。