首頁 > 資料庫 > mysql教程 > 如何將多個 SQL 行合併到單一分隔欄位中?

如何將多個 SQL 行合併到單一分隔欄位中?

DDD
發布: 2025-01-22 00:27:09
原創
717 人瀏覽過

How to Combine Multiple SQL Rows into a Single Delimited Field?

SQL Server 函數:將多個 SQL 行組合成單一分隔欄位

在 SQL Server 中有效地將子查詢中的多行合併到單一分隔欄位中需要一種強大的方法。 本文介紹了兩種有效的技術,適用於不同的 SQL Server 版本。

對於 XML 路徑(SQL Server 2005 及更高版本):

此方法與 SQL Server 2005 及後續版本相容,利用 FOR XML PATH 指令進行字串連線。 這是一個例子:

<code class="language-sql">SELECT [VehicleID], [Name], 
       (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) 
               FROM [Location] 
               WHERE (VehicleID = Vehicle.VehicleID) 
               FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')) AS Locations
FROM [Vehicle]</code>
登入後複製

此查詢使用 FOR XML PATH 為每個 VehicleID 建立一個以逗號分隔的城市值字串。 STUFF 函數刪除前導逗號。

STRING_AGG(SQL Server 2017 及更高版本):

對於 SQL Server 2017 及更高版本,STRING_AGG 函數提供了更清晰、更有效率的解決方案:

<code class="language-sql">SELECT [VehicleID], [Name], 
       (SELECT STRING_AGG([City], ', ') 
        FROM [Location] 
        WHERE VehicleID = V.VehicleID) AS Locations
FROM [Vehicle] V</code>
登入後複製

STRING_AGG 直接將 City 值與指定的分隔符號(本例中為逗號和空格)連接起來。 這種方法通常因其提高的可讀性和性能而受到青睞。

這兩種方法都可以有效地將多行資料聚合到單一分隔欄位中,從而簡化 SQL Server 中的資料操作。 選擇最適合您的 SQL Server 版本的方法以獲得最佳結果。

以上是如何將多個 SQL 行合併到單一分隔欄位中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板