SQL Server:组合 STUFF 和 FOR XML PATH 进行分组字符串连接
本指南说明如何结合使用 SQL Server 的 STUFF
函数和 FOR XML PATH
子句来有效连接组内的字符串。
了解组件:
FOR XML PATH('')
: 该子句将查询结果转换为 XML 格式。 使用空字符串 (''
) 作为 PATH
参数会生成指定列中以逗号分隔的值列表,并包含在 XML 标记内。 例如:
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
这将输出:,aaa,bbb,ccc,ddd,eee
STUFF
函数: STUFF
函数通过替换字符串的一部分来修改字符串。 我们在这里使用它来删除 FOR XML PATH('')
产生的前导逗号。 该函数的参数是:
因此,STUFF((SELECT ',' NAME FROM temp1 FOR XML PATH('')), 1, 1, '')
删除了最初的逗号,产生:aaa,bbb,ccc,ddd,eee
连接和分组:最终查询使用 ID
列将连接的字符串连接回原始表,对结果进行分组以获得所需的输出:
<code class="language-sql">SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 t1 WHERE t1.id = t2.id FOR XML PATH('')), 1, 1, '') FROM temp1 t2 GROUP BY id;</code>
这会生成如下结果集:
Id | abc |
---|---|
1 | aaa,bbb,ccc,ddd,eee |
此方法提供了一种简洁有效的方法来连接 SQL Server 中组内的字符串,避免了使用更复杂的技术。
以上是SQL Server 的 STUFF 函数和 FOR XML PATH 子句如何一起使用来连接组内的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!