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