15

I have a select query that returns one column and I want to convert that to string rows separated with ','

Select name 
from tblUsers

Gives a result:

Row1; asieh
Row2:amir
Row3:safoora

I want to return

Row1: asieh,amir,safoora
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Asieh hojatoleslami
  • 3,240
  • 7
  • 31
  • 45

3 Answers3

30

SQL Fiddle

MS SQL Server 2008 Schema Setup:

CREATE TABLE tblUsers
    ([name] varchar(7))
;

INSERT INTO tblUsers
    ([name])
VALUES
    ('asieh'),
    ('amir'),
    ('safoora')
;

Query 1:

    SELECT STUFF((
        select ','+ name 
        from tblUsers
        FOR XML PATH('')
        )
        ,1,1,'') AS names

Results:

|              NAMES |
|--------------------|
| asieh,amir,safoora |
Fabien TheSolution
  • 5,055
  • 1
  • 18
  • 30
18

Here's a solution using variables:

DECLARE @out VARCHAR(MAX)
SELECT @out = COALESCE(@out+',' ,'') + name
FROM tblUsers
SELECT @lout
Kermit
  • 33,827
  • 13
  • 85
  • 121
2

Try this :

Create Table #tblUsers ( Name Varchar(100) );
Insert Into #tblUsers Values ('Row1; asieh'),('Row2:amir'),('Row3:safoora')

Select Stuff((Select ',' + Name
                From #tblUsers
                 For Xml Path('')
       ), 1, 1, '' ) As ConcatenedString

drop table #tblUsers
Dominic Goulet
  • 7,983
  • 7
  • 28
  • 56