首页 > 数据库 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板