Concat field value to string in SQL Server

给你一囗甜甜゛ 提交于 2019-12-17 04:34:31

问题


I need a similar function to Oracle WM_CONCAT in SQL Server, which returns a comma separated list of whatever field you pass it as argument. For example, in Oracle,

select WM_CONCAT(first_name) from employee where state='CA' 

returns "John, Jim, Bob".

How can I do this in SQL Server?

Thanks


回答1:


The actual answer:

SELECT
   SUBSTRING(buzz, 2, 2000000000)
FROM
    (
    SELECT 
        firstname
    FROM 
        employee
    WHERE
        State = 'CA'
    FOR XML PATH (',')
    ) fizz(buzz)

A common question here. Some searches:

  • FOR XML PATH

  • concat rows csv [sql-server]




回答2:


Try this:


    drop table #mike_temp 
go

select * into #mike_temp 
  from (select 'Ken'  as firstname, 'CO' as state
         union all
        select 'Mike' as firstname, 'CO' as state
         union all
        select 'Tom' as firstname , 'WY' as state
       ) a
go

SELECT distinct 
       state
      ,STUFF((SELECT ', ' + b.firstname FROM #mike_temp b where a.state = b.state FOR XML PATH('')),1, 2, '') AS CSVColumn
  from #mike_temp a



回答3:


In SQL Server 2017 STRING_AGG function has been added

SELECT t.name as TableName
      ,STRING_AGG(c.name, ';') AS FieldList
  FROM sys.tables t
  JOIN sys.columns c 
    ON t.object_id = c.object_id
  GROUP BY t.name;



回答4:


AFAIK, you need to do it by yourself.

You could build an user defined function that loop with a cursor the records of Employee where the state is CA and returns the concatenation of their names.




回答5:


 SELECT Field1, Substring(Field2, 2, LEN(Field2)) AS Field2 FROM
(
    SELECT
        [InnerData].Field1,
        (SELECT  ',' + Field2 FROM @Fields WHERE Field1=[InnerData].Field1 FOR XML PATH('')) AS Field2
        FROM
        (
            SELECT DISTINCT Field1 FROM @Fields
        ) AS [InnerData]
) AS OuterData

I got this Query from this Link

Refer this Link for more Clarification




回答6:


try this

 select    
    wm_concat(name) 
 from
    employee
 where
    state='CA'
 group by
    state


来源:https://stackoverflow.com/questions/1621747/concat-field-value-to-string-in-sql-server

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