【问题标题】:T-SQL 2008: concatenate rows using for xml path and new line feed carriageT-SQL 2008:使用 xml 路径和换行符连接行
【发布时间】:2016-10-12 23:36:33
【问题描述】:

我有下表包含以下值:

create table test 
(
    folder nvarchar(20),
    size int
)

Video   255
Music   255
Docs    255
Papers  255

我需要连接文件夹字段并用逗号和新行分隔。到目前为止,我有这个:

select distinct folder + ','   as [text()]
from  test
for xml path('')

这将连接以“,”分隔,但我无法使用 char(13) 使新行工作。

【问题讨论】:

    标签: sql-server tsql for-xml-path


    【解决方案1】:

    您的预期结果不是 100% 清楚,但这里有一个小技巧

    Declare @Test table (folder nvarchar(20),size int)
    Insert Into @Test values
    ('Video' ,255),
    ('Music' ,255),
    ('Docs'  ,255),
    ('Papers',255)
    
    Select [text()] = Replace(cast([text()] as nvarchar(max)),'||',char(13)+char(10))
     From (Select [text()] = (Select Distinct folder + '||' From @test For XML path('') ) ) A
    

    返回

    text()
    Docs
    Music
    Papers
    Video
    

    另一个可能是

    Declare @String varchar(max) = ''
    Select @String=@String+Folder+char(13)+char(10)
      From @Test
    
    Select [text()]=@String
    

    返回

    text()
    Video
    Music
    Docs
    Papers
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多