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函數