通知
清除所有

如何连接文本从多行到一个单一的文本字符串在SQL服务器?

RSS

(@sathish)
成员 主持人
加入:1年前
帖子:1391
下午14/05/2021 12:14

考虑一个包含名称的数据库表,有三行:

彼得·保罗·玛丽

有没有简单的方法把它变成一串彼得,保罗,玛丽?


报价
(@abhijith)
贵族成员
加入:1年前
帖子:1350
14/05/2021 12:18点

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

如果有一个叫STUDENTS的表

SubjectID StudentName---------- -------------1玛丽1约翰1山姆2阿莱2爱德华。

我期望的结果是:

SubjectID StudentName---------- -------------1玛丽,约翰,山姆2阿莱,爱德华。

我使用了下面的t-sql:

选择主要。SubjectID,(Main.Students Len (Main.Students)-1作为“学生”选择截然不同的ST2。SubjectID (选择相约。StudentName+”、“作为(文本())dbo。学生相约在哪里相约。SubjectIDST2。SubjectID订单通过相约。SubjectIDXML路径(''))(学生)dbo。学生ST2)[主要]

如果可以连接开头的逗号并使用子字符串,则可以以更紧凑的方式完成同样的工作为了跳过第一个,所以你不需要做一个子查询:

选择截然不同的ST2。SubjectID,子字符串( (选择”、“+相约。StudentName作为(文本())dbo。学生相约在哪里相约。SubjectIDST2。SubjectID订单通过相约。SubjectIDXML路径('')),21000)(学生)dbo。学生ST2

回复报价
分享:
Baidu