Search code examples
sql-servert-sql

How to turn one column of a table into a csv string in SQL Server without using a cursor


I want to return the results of select Column from Table into a comma separated string using SQL Server.

The column in question is rather large (nvarchar(2000)) so the solution has to be able to handle very large result values.


Solution

  • DECLARE @result nvarchar(max)
    SET @result = ''
    
    SELECT @result = @result + [Column] + N','
    FROM [TABLE]
    
    --TODO: trim last ',' if you require
    
    PRINT @result
    

    If Column can be null, then either exclude it first, or use ISNULL/COALESCE - otherwise a single NULL will break the entire sequence. It is more efficient to exclude it with a WHERE:

    SELECT @result = @result + [Column] + N','
    FROM [TABLE]
    WHERE [Column] IS NOT NULL