SQL Server での文字列のグループ化と連結
SQL Server では、グループ内の文字列を連結する方法がいくつか提供されています。 非常に効率的な方法には、ユーザー定義集計関数 (UDAF) の作成が含まれます。このアプローチは、他の手法と比較してプロセスを簡素化し、パフォーマンスを向上させます。
UDAF の構築:
文字列連結用の UDAF を作成する方法は次のとおりです。
<code class="language-sql">CREATE FUNCTION [dbo].[GroupConcat] (@ValueList VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @Result VARCHAR(MAX) = ''; WHILE LEN(@ValueList) > 0 BEGIN SELECT TOP 1 @Value = Value, @ValueList = SUBSTRING(@ValueList, LEN(@Value) + 1, LEN(@ValueList)) FROM STRING_SPLIT(@ValueList, ',') -- Assumes comma-separated input WHERE @Value <> ''; SET @Result = @Result + @Value; END RETURN @Result; END;</code>
UDAF の適用:
GroupConcat
関数は SQL クエリで直接使用できます。
<code class="language-sql">SELECT Id, [dbo].[GroupConcat](Value) AS ConcatenatedValue FROM YourTable GROUP BY Id;</code>
これは、データがグループを表す Id
列と、連結する文字列を含む Value
列で構造化されていることを前提としています。 STRING_SPLIT
関数 (SQL Server 2016 以降で利用可能) は、カンマ区切りの値のリストを効率的に処理するために使用されます。 データがカンマで区切られていない場合は、それに応じて STRING_SPLIT
を調整するか、文字列を分割する別のアプローチを使用します。
例:
サンプル データが与えられた場合、クエリは次のように生成します:
<code>+----+-----------------+ | Id | ConcatenatedValue | +----+-----------------+ | 1 | AB | | 2 | C | +----+-----------------+</code>
この UDAF は、SQL Server のグループ内の文字列を連結するための合理化された効果的なソリューションを提供し、データ操作の効率を大幅に向上させます。 YourTable
をテーブルの実際の名前に置き換えることを忘れないでください。
以上がSQL Server のグループ内で文字列を効率的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。