SQL Server の FOR XML PATH 関数と STUFF 関数の相乗効果
SQL Server では、FOR XML PATH
関数と STUFF
関数の組み合わせがデータの整理と結合に重要な役割を果たします。望ましい目標を達成するために、そのメカニズムを分析してみましょう:
1. 「FOR XML PATH」を使用して XML 要素文字列を抽出します
FOR XML PATH
クエリ結果を XML 要素に変換します。要素名を省略すると、例に示すように、値のカンマ区切りリストが出力されます:
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
2. STUFF を使用して先頭のカンマを削除します
STUFF
は、指定された文字を置き換えることによって文字列を変更するために使用されます。この例では、XML 文字列の先頭のカンマを削除します:
<code class="language-sql">STUFF((SELECT ',' + NAME FROM temp1 FOR XML PATH('')), 1, 1, '')</code>
3. 結合を実行してリストを生成します
最後に、変更されたリストが「id」列を介して元のテーブルと結合されます。
<code class="language-sql">SELECT ID, abc = STUFF(( SELECT ',' + name FROM temp1 t1 WHERE t1.id = t2.id FOR XML PATH ('')) , 1, 1, '') from temp1 t2 group by id;</code>
この組み合わせにより、各 'Id' の 'Name' 列の値が効果的に連結され、期待される出力が得られます。
<code>Id | Name ------------------- 1 | aaa,bbb,ccc,ddd,eee</code>
以上がSQL Server でデータを連結するために「FOR XML PATH」と「STUFF」をどのように組み合わせますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。