将 int 列表转换为带逗号的字符串 SQL Server

jij*_*663 1 sql t-sql sql-server function

如何在 SQL Server 中使用函数将 int 列表转换为带逗号的字符串?

在此输入图像描述

转换为:“68,74,58,64,67”

Sql*_*Zim 6

使用stuff()withselect ... for xml path ('')方法进行字符串连接

create table t (ProductId int);
insert into t values (68) ,(74) ,(58) ,(64) ,(67);

select 
    ProductIds = stuff((
        select ','+convert(varchar(10),ProductId)
        from t
        for xml path (''), type).value('.','nvarchar(max)')
      ,1,1,'')
Run Code Online (Sandbox Code Playgroud)

rextester 演示:http://rextester.com/RZQF31435

返回:

+----------------+
|   ProductIds   |
+----------------+
| 68,74,58,64,67 |
+----------------+
Run Code Online (Sandbox Code Playgroud)

编辑:在 SQL Server 2017+ 中,您可以使用string_agg(),并且根据 Jeffry Schwartz 的文章,性能似乎是相同的:Should I Replace My FOR XML PATH String Merges with String_agg?