首页 / 问答 / SQL Server 2012数据库将同一个班的学生姓名用逗号连接应该如何实现?

SQL Server 2012数据库将同一个班的学生姓名用逗号连接应该如何实现?

SQL SQL Server SQL Server 2012 1.19K 次浏览
0

SQL Server 2012数据库将同一个班的学生姓名用逗号连接应该如何实现?

假设数据表名为students,包含字段有:id,name,class_name

回复 [×]
提交评论
请输入评论内容

2 个回答

  • 0

    在SQL Server 2012数据库中,可以使用FOR XML PATHSTUFF函数来将同一班级的姓名连接成逗号分隔的字符串。以下是示例脚本:

    这将创建一个名为students的表格,并插入示例数据。您可以使用以下SQL查询来将同一班级的姓名连接成逗号分隔的字符串:

    解释:

    • SELECT语句中选择class_name列和使用STUFF函数连接同一班级的姓名。
    • STUFF 函数将在逗号之前删除第一个字符,因为逗号分隔的字符串的第一个字符是不必要的。
    • FOR XML PATH 用于将姓名连接成逗号分隔的字符串。
    • TYPE 用于将XML数据类型转换为nvarchar(max)数据类型。
    • value('.', 'nvarchar(max)') 用于提取XML标记中的文本内容。

    请注意,以上查询将在同一班级中连接所有姓名。如果需要按其他标准进行连接,可以更改WHERE子句。

    示例输出结果:

    这表明:

    • class_nameA 的班级中有 Alice、Bob、Frank 和 Charlie 四个人;
    • class_nameB 的班级中有 Charlie、Alice、David 和 Emily 四个人;
    • class_nameC 的班级中有 David、Bob、Grace 和 Alice 四个人。

    对于每个班级,names列都是一个用逗号分隔的字符串,其中包含班级中所有学生的姓名。

    Rector的个人主页

    Rector

    2023-02-20 回答

    • 0

      在 SQL Server 2017 中,可以使用STRING_AGG函数来将同一班级的姓名连接成逗号分隔的字符串。以下是在students表格上使用STRING_AGG函数的SQL查询:

      这将返回与前一个查询相同的结果:

      与使用STUFFFOR XML PATH的查询不同,STRING_AGG函数不需要子查询或任何字符串操作,因此更简单和直观。

      Rector的个人主页

      Rector

      2023-02-20 回答

      我来回答