首頁 >資料庫 >mysql教程 >如何在 SQL Server 中高效率地連接群組內的字串?

如何在 SQL Server 中高效率地連接群組內的字串?

Susan Sarandon
Susan Sarandon原創
2025-01-09 12:47:48119瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn