考虑一个包含名称的数据库表,其中包含三行:
Peter
Paul
Mary
有没有一种简单的方法可以将其转换为 Peter, Paul, Mary
的单个字符串?
原文由 JohnnyM 发布,翻译遵循 CC BY-SA 4.0 许可协议
考虑一个包含名称的数据库表,其中包含三行:
Peter
Paul
Mary
有没有一种简单的方法可以将其转换为 Peter, Paul, Mary
的单个字符串?
原文由 JohnnyM 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 SQL Server 2017 或更高版本中,您可以使用 STRING_AGG() 函数生成 逗号分隔 值。请看下面的一个例子。
SELECT
VendorId, STRING_AGG(FirstName,',') UsersName
FROM Users
WHERE VendorId != 9
GROUP BY VendorId
原文由 sameer Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1.4k 阅读
如果您使用的是 SQL Server 2017 或 Azure,请参阅 Mathieu Renda 答案。
当我尝试加入两个具有一对多关系的表时,我遇到了类似的问题。在 SQL 2005 中,我发现
XML PATH
方法可以很容易地处理行的连接。如果有一个表叫
STUDENTS
我预期的结果是:
我使用了以下
T-SQL
:如果您可以在开头连接逗号并使用
substring
跳过第一个,那么您可以以更紧凑的方式执行相同的操作,因此您不需要执行子查询: