如何获取以逗号分隔的列值

Posted

技术标签:

【中文标题】如何获取以逗号分隔的列值【英文标题】:How to get column values comma seperatedly 【发布时间】:2014-03-19 04:50:01 【问题描述】:

如何在 SQL Server 中获取以逗号分隔的列值。下面显示的是我的 sql 查询#

 select BandName from BandMaster where BandId<100 

我需要在单个查询中以逗​​号分隔获取 BandName 值。

【问题讨论】:

How to make a list of T-SQL results with comma's between them? 的可能重复项 任何特定版本的 SQL Server? 也复制了:***.com/questions/12231439/… 【参考方案1】:
Use XML path for this.

select (select BandName+',' from BandMaster where BandId<100 for xml path('')) as NewColumnName

Try this

【讨论】:

它将以 XML 格式返回,而不是以逗号分隔。 它将返回逗号分隔的本身。请尝试,然后评论 是的朋友,我试过了,然后评论了。它是像这样的 AB comminig。我错过了什么吗? 不,我的朋友,我知道你还没有尝试过 :)。如果你给出这样的 'select BandName from BandMaster where BandId,那么它将以您指定的方式出现,我在外部查询中指定了一个 select,以绕过 xml 标签。请尝试 select (select status_name+',' from status_master where isfollowup=4 for xml path('')) as NewColumnName..请试试【参考方案2】:

试试这个

SELECT BandName  = 
              STUFF ( ( SELECT ','+InrTab.BandName 
                        FROM [Table1] InrTab
                        WHERE InrTab.BandId= OutTab.BandId
                                            AND InrTab.BandId < 100                     
                        ORDER BY InrTab.BandId
                        FOR XML PATH(''),TYPE 
                       ).value('.','VARCHAR(MAX)') 
                      , 1,1,SPACE(0))
FROM [Table1] OutTab
GROUP BY OutTab.BandId;

【讨论】:

【参考方案3】:

请试试这个

SELECT GROUP_CONCAT(BandName) from BandMaster where BandId&lt;100.

【讨论】:

SQL SEREVR 中没有 GROUP_CONCAT【参考方案4】:
Declare @retStr varchar(max) = ''
select @retStr = @retStr + BandName + ',' from BandMaster
where BandId<100 

Select @retStr

【讨论】:

以上是关于如何获取以逗号分隔的列值的主要内容,如果未能解决你的问题,请参考以下文章

如何在火花中使用逗号分隔符将相同的列值连接到新列

如何将逗号分隔的列值与另一个表作为行连接

如何根据两个逗号分隔值的列中的任何一个值获取记录

如何在laravel中使用逗号分隔值的列上使用'where'

sql SQL - 在以逗号,管道或分号或任何其他字符分隔的列中获取多个值或连接值的值

如何根据数据框中的列值获取特定的行数[重复]