sql - SELECT ... FOR XML PATH (' ' ),1,1) 是什么意思?

标签 sql sql-server

我正在学习sql question之一and here我看到了这个的用法,有人可以让我理解 xml path('') 在 sql 中的含义吗?是的,我浏览了网页,但我不太明白!

我没有得到后面的东西,现在这段代码做了什么?(仅选择部分)

declare @t table
(
    Id int,
    Name varchar(10)
)
insert into @t
select 1,'a' union all
select 1,'b' union all
select 2,'c' union all
select 2,'d' 

select ID,
stuff(
(
    select ','+ [Name] from @t where Id = t.Id for XML path('')
),1,1,'') 
from (select distinct ID from @t )t

最佳答案

这里没有真正的技术可学。将多行数据连接成一个字符串只是一个可爱的技巧。与其说是 XML 格式化功能的预期用途,不如说是对某个功能的奇怪使用。

SELECT ',' + ColumnName ... FOR XML PATH('')

根据组合 ColumnName 列中的多行数据,生成一组逗号分隔值。它将产生一个类似 ,abc,def,ghi,jkl 的值。

STUFF(...,1,1,'')

然后用于删除上一个技巧生成的前导逗号,请参阅 STUFF有关其参数的详细信息。

(奇怪的是,很多人倾向于将这种生成逗号分隔值集的方法称为“STUFF 方法”,尽管 STUFF 仅负责最后的修剪)

关于sql - SELECT ... FOR XML PATH (' ' ),1,1) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623593/

相关文章:

sql - 多个插入与具有多个值的一个插入

mysql - 在MySQL中,如何按特定实例出现的次数排序?

sql-server - Windows 更新后 SQL Server Management Studio 失败

c# - Remote SQL server for C# 的正确连接字符串

php - 如何在 Windows 开发环境的 PHP 中将 PDO 与 MSSQL 结合使用?

sql替换两个字符串之间的所有字符

c# - 对 DataTable 执行 sql 查询

sql - SELECT 查询是否总是以相同的顺序返回行?带聚簇索引的表

mysql - 写入或更新时重复键?

SQL 游标...您会捍卫任何用例?