首页 > 代码库 > FOR XML PATH
FOR XML PATH
/*
FOR XML PATH
之前已经说了一些FOR XML (AUTO,RAW)的使用,下面说一说FOR XML PATH 模式的使用.
AUTO,RAW模式可以满足大多数的XML格式需求,PATH模式可以提供其他的一些格式功能.
*/
--1.控制层次
/*
使用PATH模式,你可以生成XML节点的层次结构.XML的层次是通过列的别名来控制的.
下面的查询中增加了一个新的包含了NAME,Phone和SEX的节点INFO,注意别名中的"/"
是用来控制XML生成层次的。
*/
--测试表沿用FOR XML (AUTO,RAW) 中的Employees的测试表。
SELECT
EmployeeID AS ‘@id‘,
Name AS ‘info/NAME‘,
Phone AS ‘info/Phone‘,
SEX AS ‘info/SEX‘
FROM Employees FOR XML PATH(‘Employee‘), TYPE, ELEMENTS, ROOT(‘Employees‘)
/*
<Employees>
<Employee id="1">
<info>
<NAME>tudou</NAME>
<Phone>15958944683</Phone>
<SEX>男</SEX>
</info>
</Employee>
<Employee id="2">
<info>
<NAME>shuige</NAME>
<Phone>00000000000</Phone>
<SEX>男</SEX>
</info>
</Employee>
<Employee id="3">
<info>
<NAME>xiaozhu</NAME>
<Phone>11111111111</Phone>
<SEX>男</SEX>
</info>
</Employee>
</Employees>
*/
--2: 生成列表
/*
上面我们看到PATH可以用来控制层次结构,PATH还可以用来生成列表
在行转列的时候很有用途,逛CSDN的应该经常看到这样的用法。下面
生成EmployeeID列表
*/
SELECT
EmployeeID AS ‘data()‘
FROM Employees
FOR XML PATH(‘‘)
/*
结果:
1 2 3
*/
/*
可以看到结果是用空格隔开的,但是大部分时候我们需要以一定的符号
隔开,下面我们以","隔开。
*/
SELECT REPLACE(
(SELECT
EmployeeID AS ‘data()‘
FROM Employees
FOR XML PATH(‘‘) ),‘ ‘,‘,‘)
/*
结果:
1,2,3
*/
FOR XML PATH