SQL Server 多行文本合併成單行字符串
在各種數據庫場景中,您可能需要將多行中的字符串值合併成單個、連貫的字符串。當您需要將來自不同數據點的信息整合到一個綜合摘要或顯示中時,這尤其有用。
問題陳述
考慮一個名為“Names”的表,其中包含以下三行:
挑戰
目標是將這些單獨的行轉換為單個以逗號分隔的字符串:“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中文網其他相關文章!