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

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

 select BandName from BandMaster where BandId<100 

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

【问题讨论】:

标签: sql sql-server


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2020-08-19
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多