Concatenating Column Values into a Comma-Separated List

匿名 (未验证) 提交于 2019-12-03 01:39:01

问题:

What is the TSQL syntax to format my output so that the column values appear as a string, seperated by commas.

Example, my table CARS has the following:

CarID    CarName   ----------------     1    Porsche       2    Mercedes       3    Ferrari   

How do I get the car names as : Porsche, Mercedes, Ferrari

回答1:

You can do a shortcut using coalesce to concatenate a series of strings from a record in a table, for example.

declare @aa varchar (200) set @aa = ''  select @aa =      case when @aa = ''     then CarName     else @aa + coalesce(',' + CarName, '')     end   from Cars  print @aa 


回答2:

SELECT LEFT(Car, LEN(Car) - 1) FROM (     SELECT Car + ', '     FROM Cars     FOR XML PATH ('')   ) c (Car) 


回答3:

You can do this using stuff:

SELECT Stuff(     (     SELECT ', ' + CARS.CarName     FROM CARS     FOR XML PATH('')     ), 1, 2, '') AS CarNames 


回答4:

If you are running on SQL Server 2017 or Azure SQL Database you do something like this :

 SELECT STRING_AGG(CarName,',') as CarNames  FROM CARS  


回答5:

DECLARE @CarList nvarchar(max); SET @CarList = N''; SELECT @CarList+=CarName+N',' FROM dbo.CARS; SELECT LEFT(@CarList,LEN(@CarList)-1); 

Thanks are due to whoever on SO showed me the use of accumulating data during a query.



回答6:

Another solution within a query :

select      Id,      STUFF(         (select (', "' + od.ProductName + '"')         from OrderDetails od (nolock)         where od.Order_Id = o.Id         order by od.ProductName         FOR XML PATH('')), 1, 2, ''     ) ProductNames from Orders o (nolock) where o.Customer_Id = 525188 order by o.Id desc 

(EDIT: thanks @user007 for the STUFF declaration)



回答7:

 DECLARE @SQL AS VARCHAR(8000) SELECT @SQL = ISNULL(@SQL+',','') + ColumnName FROM TableName SELECT @SQL 


回答8:

Please try this with the following code:

DECLARE @listStr VARCHAR(MAX) SELECT @listStr = COALESCE(@listStr+',' , '') + CarName FROM Cars SELECT @listStr 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!