ホームページ > データベース > mysql チュートリアル > SQL Server で効率的な列分割に master..spt_values を使用するにはどうすればよいですか?

SQL Server で効率的な列分割に master..spt_values を使用するにはどうすればよいですか?

DDD
リリース: 2025-01-01 04:12:09
オリジナル
691 人が閲覧しました

How Can master..spt_values Be Used for Efficient Column Splitting in SQL Server?

列分割に master..spt_values を使用する理由とその方法

目的master..spt_values

文書化されていないステータスにもかかわらず、master..spt_values は、Microsoft SQL Server のシステム プロシージャがさまざまな機能を効果的に実行できるようにする貴重なテーブルです。これには、データ型、ロール、その他のメタデータのルックアップ値を含む、これらのシステム プロシージャで使用される参照テーブルと投影データのコレクションが含まれています。

Type = 'P'

について

Type = 'P' は、master..spt_values 内の射影テーブルを意味します。このテーブルには、データの投影または走査を実行するために使用できる 0 から 2047 までの連続した数値が含まれています。

列分割に spt_values を利用

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
ログイン後にコピー
1 つの列に「1,2,3」などのカンマ区切りの値のリストが含まれるテーブルを想像してください。この列を複数の行に変換するには、次のように spt_values を利用します。

このシナリオでは、クエリは spt_values テーブル (Type = 'P') を反復処理し、数値シーケンスを使用して、分割操作。カンマ区切りリスト内の各値を効果的に分離し、結果セットに個別の行を作成します。

gt;列分割に spt_values を使用する利点

    マスターを使用します。列分割の .spt_values にはいくつかの機能があります。利点:
  • 効率:
  • 既存のテーブルと一連の数値を利用することで、クエリは一時テーブルの作成と設定のオーバーヘッドを回避します。
  • 柔軟性:
  • 射影テーブルは幅広い数値を提供し、異なる値を持つ列に対してさまざまな分割操作を可能にします。
  • 互換性:
master..spt_values は組み込みシステム テーブルであるため、SQL Server インストールで広く使用でき、互換性と信頼性が保証されます。

以上がSQL Server で効率的な列分割に master..spt_values を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート