string_agg
をエミュレートするSQL Server の string_agg
関数は、文字列の連結を簡素化します。 ただし、古いバージョンの場合は、別のアプローチが必要です。この記事では、同様の結果を達成する方法を説明します。
目標は、このクエリの機能を複製することです:
<code class="language-sql">SELECT STRING_AGG(t.id, ',') AS id FROM Table t;</code>
これは、カンマを区切り文字として使用して、「Table」テーブルの「id」列の値を連結します。
2017 より前の SQL Server には string_agg
がありません。 このソリューションでは、FOR XML PATH
メソッドを使用します。
<code class="language-sql">SELECT STUFF((SELECT ',' + CAST(t.id AS VARCHAR(MAX)) FROM Table t FOR XML PATH('')), 1, 1, '');</code>
これは、カンマ区切りの文字列を巧みに構築します。 FOR XML PATH('')
は XML 表現を生成し、実質的にカンマ区切りのリストを作成します。 STUFF()
は先頭のカンマを削除します。 これは、string_agg
の動作を効果的に模倣します。
この回避策は、新しい string_agg
関数の機能をミラーリングし、古い SQL Server バージョンでの文字列連結に対する実用的な解決策を提供します。
以上が2017 より前のバージョンで SQL Server の「string_agg」関数をレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。