在本教學中,將學習如何使用SQL Server STRING_AGG()函數將字串行連接成為具有指定分隔符號的一個字串。
SQL Server STRING_AGG()函數簡介
STRING_AGG()是一個聚合函數,它將由指定的分隔符號分隔將字串行連接成一個字串。 它不會在結果字串的末尾添加分隔符號。
以下是STRING_AGG()函數的語法:
STRING_AGG ( input_string, separator ) [ order_clause ]
在這個語法中:
input_string是串聯時可以轉換為VARCHAR和NVARCHAR的類型。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函數
