ホームページ > データベース > mysql チュートリアル > SQL Server でカンマ区切り値を行に分割するにはどうすればよいですか?

SQL Server でカンマ区切り値を行に分割するにはどうすればよいですか?

DDD
リリース: 2025-01-05 08:24:43
オリジナル
192 人が閲覧しました

How Can I Split Comma-Separated Values into Rows in SQL Server?

カンマ区切りの値を行に分割する

SQL Server では、テーブルの列に格納されているカンマ区切りの文字列を複数の行に変換できます。 XML と文字列操作技術を組み合わせて使用​​して実現できます。目的は、カンマ区切りの文字列を含む単一行を含むテーブルを、元の文字列の一意の値を各行に含む複数の行を含むテーブルに変換することです。

これを実現するには、次の手順に従います。

  1. 文字列を XML フラグメントに変換します: カンマ区切りの文字列を XML タグで囲み、XML フラグメントに変換します。この操作では、各値に開始タグと終了タグを追加し、階層的な XML 構造を作成します。
  2. XML フラグメントを分割するには、CROSS APPLY を使用します。 XML フラグメントを個別に分割するには、CROSS APPLY 演算子を使用します。ノード。各ノードは、元の文字列内の単一の値を表します。
  3. ノードから値を抽出します: 各ノードに VALUE() メソッドを適用して、実際の値を文字列として抽出します。これにより、XML ノードが使用可能なデータ型に変換されます。
  4. ID と抽出された値を結合します: 抽出された値を元のテーブルの ID 列と結合して、新しいテーブルを作成します。これにより、各値が元のテーブルの対応する行に確実に関連付けられます。

このプロセスを示すクエリの例を次に示します。

SELECT A.[id],
       Split.a.value('.', 'VARCHAR(100)') AS String
FROM (SELECT [id],
             CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String
         FROM TableA) AS A CROSS APPLY String.nodes ('/M') AS Split(a);
ログイン後にコピー

このクエリは、目的の出力を生成します。ここで、元のテーブルの各行は複数の行に展開され、各行にはカンマ区切りの文字列からの 1 つの値が含まれます。

以上がSQL Server でカンマ区切り値を行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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