首頁 > 資料庫 > mysql教程 > 如何在 SQL Server 中將多行文字連接成單一字串?

如何在 SQL Server 中將多行文字連接成單一字串?

Mary-Kate Olsen
發布: 2025-01-25 18:12:09
原創
451 人瀏覽過

How to Concatenate Text from Multiple Rows into a Single String in SQL Server?

SQL Server 多行文本合併成單行字符串

在各種數據庫場景中,您可能需要將多行中的字符串值合併成單個、連貫的字符串。當您需要將來自不同數據點的信息整合到一個綜合摘要或顯示中時,這尤其有用。

問題陳述

考慮一個名為“Names”的表,其中包含以下三行:

  • Peter
  • Paul
  • Mary

挑戰

目標是將這些單獨的行轉換為單個以逗號分隔的字符串:“Peter, Paul, Mary”。

解決方案

在 SQL Server 2017 和 Azure SQL 數據庫中,您可以使用 STRING_AGG() 函數來完成此任務。 STRING_AGG() 的語法如下:

<code class="language-sql">STRING_AGG(<expression> [ , delimiter ] [ ORDER BY <expression> [ ASC | DESC ] ])</code>
登入後複製

對於我們的場景,表達式將是名稱列,分隔符將是逗號。 ORDER BY 子句確保名稱按特定順序出現(即字母順序)。

SQL 查詢

<code class="language-sql">SELECT STRING_AGG(Name, ', ') AS ConcatenatedNames
FROM Names
ORDER BY Name;</code>
登入後複製

輸出

<code>ConcatenatedNames
---------------------
Peter, Paul, Mary</code>
登入後複製

早期 SQL Server 版本的替代解決方案

如果您使用的是早期版本的 SQL Server,例如 SQL Server 2005,您可以使用以下方法:

<code class="language-sql">SELECT
    (
        SELECT StudentName + ',' AS [text()]
        FROM dbo.Students
        WHERE SubjectID = Main.SubjectID
        ORDER BY StudentID
        FOR XML PATH('')
    ).value('text()[1]', 'nvarchar(max)') AS Students
FROM
    (
        SELECT DISTINCT SubjectID
        FROM dbo.Students
    ) AS Main;</code>
登入後複製

以上是如何在 SQL Server 中將多行文字連接成單一字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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