ホームページ >データベース >mysql チュートリアル >SQL Server を使用してカンマ区切りのセル値を個々の行に変換するにはどうすればよいですか?

SQL Server を使用してカンマ区切りのセル値を個々の行に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-03 12:46:44782ブラウズ

How to Convert Comma-Separated Cell Values into Individual Rows Using SQL Server?

SQL Server を使用したカンマ区切りのセル値の個々の行への変換

テーブル内のデータを扱うとき、値が格納されている場合があります。単一セル内のカンマ区切りの文字列として。分析やさらなる処理を容易にするために、これらの値を別々の行に分割することが必要になる場合があります。この記事では、SQL Server SELECT クエリを使用してこの目的を達成する方法について説明します。

問題:

「String」という列を持つ「Sample」という名前のテーブルについて考えます。カンマ区切りの値が含まれます。各値が独自の行を占める形式にデータを変換する必要があります:

元のテーブル:

Id String
1 abc,def,ghi
2 jkl,mno,pqr

必要な出力:

Id processedrows
1 abc
1 def
1 ghi
2 jkl
2 mno
2 pqr

解決策:

目的の出力を実現するには、次の SELECT を利用できます。クエリ:

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. 括弧で囲まれた内部クエリは、各値をラップすることによって「String」列から XML 文字列を構築します。 XML タグ () を使用します。この手順は、後続の分割操作を有効にするために必要です。
  2. CROSS APPLY 演算子は、String.nodes() 関数を内部クエリの各行に適用し、「String」列を XML 内の個々のノードに効果的に分割します。 tree.
  3. 最後に、SELECT ステートメントは各分割ノードの値とともに「id」列を取得します。これは自動的に VARCHAR データに変換されます。 type.

リファレンス:

この手法と代替ソリューションの詳細については、次のリソースを参照してください:

http:/ /www.sqljason.com/2010/05/converting-single-comma- Separated-row.html

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。