参考:
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 回去.