ホームページ >データベース >mysql チュートリアル >SQL Server のグループ内で文字列を効率的に連結するにはどうすればよいですか?

SQL Server のグループ内で文字列を効率的に連結するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-09 12:47:48178ブラウズ

How to Efficiently Concatenate Strings Within Groups in SQL Server?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。