码迷,mamicode.com
首页 > 数据库 > 详细

如何将多行中的文本连接成SQL服务器中的单个文本字符串String?

时间:2020-07-12 09:15:33      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:otto   级别   连接   保留   标题   一对多   开始   distinct   string   

[

鉴于indexing随着数据集规模的增加,这一点非常重要,有人可以解释一下如何在一个database-agnostic级别上进行索引工作?

如何将多行中的文本连接成SQL服务器中的单个文本字符串String?

当我试图用一对多关系连接两个表时,我遇到了类似的问题。在SQL 2005中,我发现该XML PATH方法可以很容易地处理行的连接。

如果有一个表叫?STUDENTS

SubjectID       StudentName
----------      -------------
1               Mary
1               John
1               Sam
2               Alaina
2               Edward

我预期的结果是:

SubjectID       StudentName
----------      -------------
1               Mary, John, Sam
2               Alaina, Edward

我使用了以下内容T-SQL:

Select Main.SubjectID,
       Left(Main.Students,Len(Main.Students)-1) As "Students"
From
    (
        Select distinct ST2.SubjectID, 
            (
                Select ST1.StudentName + ‘,‘ AS [text()]
                From dbo.Students ST1
                Where ST1.SubjectID = ST2.SubjectID
                ORDER BY ST1.SubjectID
                For XML PATH (‘‘)
            ) [Students]
        From dbo.Students ST2
    ) [Main]

如果您可以在开始时对逗号进行连接并使用substring跳过第一个逗号,那么您可以以更紧凑的方式执行相同的操作,因此不需要执行子查询:

Select distinct ST2.SubjectID, 
    substring(
        (
            Select ‘,‘+ST1.StudentName  AS [text()]
            From dbo.Students ST1
            Where ST1.SubjectID = ST2.SubjectID
            ORDER BY ST1.SubjectID
            For XML PATH (‘‘)
        ), 2, 1000) [Students]
From dbo.Students ST2

?

]
转载请保留页面地址:https://www.breakyizhan.com/sql/3973.html

如何将多行中的文本连接成SQL服务器中的单个文本字符串String?

标签:otto   级别   连接   保留   标题   一对多   开始   distinct   string   

原文地址:https://www.cnblogs.com/breakyizhan/p/13286358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!