SQL点滴积累5--For xml Path
之前项目接触过这个结构,当时用完没有总结,现在又接触到这个结构,只想在这儿总结一下,免得再用到的时候去网上乱找。 For xml Path结构返回xml格式的查询结果。
如:tb表中数据如下 select * from tb

1)简单使用
当使用for xml path时 select * from tb for xml path

2)指定结点名称
可以为返回的xml结点指定名称 ,如 SELECT name as '姓名',Subject AS '科目' FROM dbo.tb FOR XML PATH('考试信息')返回结果如下
3)指定返回结果结构
如 SELECT DISTINCT(NAME)+'\' FROM dbo.tb FOR XML PATH('') 返回结果为test_0806\李四\王五\张三\
举例说明
看到网上一个例子,讲的是行列转换,其中就用到了该结构
如 仍引用tb表,要统计每个学生都参与了哪些科目的考试(成绩不为零),并以以下方式展示

查询语句为 SELECT NAME ,STUFF(subjects,1,1,'') as subjs FROM (
SELECT Name ,
(SELECT '/'+Subject FROM dbo.tb
WHERE Name=a.NAME AND Result<>0
FOR XML PATH('')
)AS subjects
FROM dbo.tb AS a
GROUP BY NAME
)AS b
浙公网安备 33010602011771号