參考:
How To Use STRING_AGG – Concat Multiple Row Values In SQL Server
如果你想做 string.join(',', collection) 的話, 那么就可以使用 STRING_AGG 了
1. 簡單用
SELECT STRING_AGG(Name, ',') AS NameStringList FROM Person
結果是: keatkeat, xinyao, mark
NULL 會被自動過濾掉, 如果你要自行處理 null 可以使用 ISNULL(Name, 'N/A') 之類的方式.
2. 配合 group by
SELECT AGE, STRING_AGG(Name, ',') AS NameStringList FROM Person GROUP BY AGE
3. 再排序
SELECT AGE, STRING_AGG(Name, ',') WITHIN GROUP (ORDER BY Name ASC) AS NameStringList FROM Person GROUP BY AGE
通過 WITHIN GROUP 還可以對結果再排序哦.
4. 遇上 DISTINCT
如果出來的結果想要 distinct 的話
Produce DISTINCT values in STRING_AGG
Get unique values using STRING_AGG in SQL Server
如果不考慮性能的話, 我覺得簡單粗暴的方式就是直接 SPLIT 然后 DISTINCT 再 JOIN 回去.