カンマ区切りの列値からの行の抽出
問題:
カンマ区切りの列を含むテーブルが指定されたとします。値の場合、目的は各値を個別に変換することです。 rows.
クエリ:
SELECT A.[id],
Split.a.value('.', 'VARCHAR(100)') AS processedrows
FROM (SELECT [id],
CAST ('<M>' + REPLACE([string], ',', '</M><M>') + '</M>' AS XML) AS String
FROM Sample) AS A CROSS APPLY String.nodes ('/M') AS Split(a);
ログイン後にコピー
説明:
- 内部クエリは、という名前の新しい列を作成します。 XML タグ内の元のカンマ区切り値をラップする文字列。これは、CAST 関数と REPLACE 関数を使用して値を整形式の XML 文字列に変換することで実現されます。
- 外側のクエリはクロス適用を実行し、nodes 関数を使用して XML 文字列をノードに解析します。各ノードは、単一のカンマ区切り値を表します。
- a.value('.','VARCHAR(100)') 式は、a ノードの値を VARCHAR(100) データ型として抽出します。これにより、処理された個々の行が得られます。
リファレンス:
- [SQL を使用した単一のカンマ区切りの行値から複数の行への変換] XML](http://www.sqljason.com/2010/05/converting-single-comma- Separated-row.html)
以上がSQL でカンマ区切りの列値から行を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。