ホームページ >データベース >mysql チュートリアル >master..spt_values が SQL Server でカンマ区切り値を効率的に分割するにはどうすればよいですか?
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 の Type "P" テーブルを利用して、次のような一連の数値を作成します。 CSV 列 (col4) の各文字を表示します。次に、これらの数値を使用して、カンマ区切り文字に基づいて列を行に分割します。
以上がmaster..spt_values が SQL Server でカンマ区切り値を効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。