SQL Server String_agg()函数

在本教程中,将学习如何使用SQL Server STRING_AGG()函数将字符串行连接成为具有指定分隔符的一个字符串。

SQL Server STRING_AGG()函数简介

STRING_AGG()是一个聚合函数,它将由指定的分隔符分隔将字符串行连接成一个字符串。 它不会在结果字符串的末尾添加分隔符。

以下是STRING_AGG()函数的语法:

STRING_AGG ( input_string, separator ) [ order_clause ]

在这个语法中:

  • input_string是串联时可以转换为VARCHARNVARCHAR的类型。
  • separator是结果字符串的分隔符。它可以是文字或变量。
  • order_clause使用WITHIN GROUP子句指定连接结果的排序顺序:
WITHIN GROUP ( ORDER BY expression [ ASC | DESC ] )

STRING_AGG()忽略NULL,并且在执行连接时不会为NULL添加分隔符。

SQL Server STRING_AGG()函数示例

下面将使用示例数据库中的sales.customers表进行演示:

客户表

1. 使用STRING_AGG()函数生成逗号分隔值

此示例使用STRING_AGG()函数生成城市客户的电子邮件列表:

SELECT
    city, 
    STRING_AGG(email,';') email_list
FROM
    sales.customers
GROUP BY
    city;

执行上面查询语句,得到以下结果:

查询结果

要对email列表进行排序,请使用WITHIN GROUP子句:

SELECT
    city, 
    STRING_AGG(email,';') 
        WITHIN GROUP (ORDER BY email) email_list
FROM
    sales.customers
GROUP BY
    city;

执行上面查询语句,得到以下结果:

查询结果

在本教程中,学习了如何使用SQL Server STRING_AGG()函数将字符串行连接到具有指定分隔符的一个字符串中。


上一篇: SQL Server字符串函数 下一篇: SQL Server Window函数