ユーザー定義の関数を使用して、
mysqlのgroup_concat
をSQL Server 2005で複製する
mysqlのgroup_concat
関数は、複数の行からの値を単一の文字列に効率的に連結します。 SQL Server 2005には、この組み込み機能が欠けているため、アプリケーションを移行する際に課題が生じます。この記事では、SQL Server 2005でユーザー定義関数(UDF)を作成して同様の結果を達成する方法を示しています。
<code class="language-sql">CREATE FUNCTION dbo.my_group_concat (@field NVARCHAR(MAX), @delimiter NVARCHAR(1) = ',') RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @result NVARCHAR(MAX) = ''; DECLARE @row_num INT = 0; WHILE @row_num 0 SET @result += @delimiter; SET @row_num += 1; END; RETURN @result; END;</code>
動作を模倣するためにクエリで使用できます:group_concat
<code class="language-sql">SELECT empName, dbo.my_group_concat(projID, ' / ') AS concatenated_projID FROM project_members GROUP BY empName;</code>
と同様の出力を生成します
group_concat
<code>empName | concatenated_projID --------|---------------------- ANDY | A100 / B391 / X010 TOM | A100 / A510</code>
このUDFは機能的な同等のものを提供しますが、MySQLのの完璧なレプリカではありません。 パフォーマンスの考慮事項も異なる場合があります。このソリューションは、この特定の機能を必要とするアプリケーションを移行するための実用的な回避策を提供します。
以上がSQL Server 2005 で MySQL の group_concat 関数をレプリケートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。