解释该守则的最简单方式是研究如何使用<代码>。 表格XML PATH用于实际XML。 缩略语 Employee:
EmployeeID Name
1 John Smith
2 Jane Doe
你可以使用
SELECT EmployeeID, Name
FROM emp.Employee
FOR XML PATH ( Employee )
这将产生以下的XML:
<Employee>
<EmployeeID>1</EmployeeID>
<Name>John Smith</Name>
</Employee>
<Employee>
<EmployeeID>2</EmployeeID>
<Name>Jane Doe</Name>
</Employee>
从PATH
中删除了外壳标签,以便:
SELECT Name
FROM Employee
FOR XML PATH ( )
创造财富
<Name>John Smith</Name>
<Name>Jane Doe</Name>
当时你做的不是理想的,那一栏名称数据就造成了一种q错误,因为它试图制造一种并非法律标签的xml标签,因此产生了以下错误:
栏目数据(0x0028)载有XML表格所要求的无效XML识别符号;(0x0028)是第一个错误特征。
相关分局掩盖了这一错误,只是产生XML,没有标签:
SELECT Name AS [Data()]
FROM Employee
FOR XML PATH ( )
creates
John Smith Jane Doe
然后,你将空间替换成mas体,不言而喻。
If I were you I would adapt the query slightly:
SELECT E1.deptno,
STUFF(( SELECT , + E2.ename
FROM emp AS e2
WHERE e1.deptno = e2.DEPTNO
FOR XML PATH( )
), 1, 2, )
FROM EMP AS e1
GROUP BY DEPTNO;
没有任何栏目将意味着不会产生xml的标签,在选定的电梯中添加 com号是指任何空间不会造成错误的名称。
ADDENDUM
详细论述KM在评论中所说的话,因为这似乎又增加了几个看法,逃避XML特征的正确方式是使用<代码>。
SELECT E1.deptno,
STUFF(( SELECT , + E2.ename
FROM emp AS e2
WHERE e1.deptno = e2.DEPTNO
FOR XML PATH( ), TYPE
).value( . , NVARCHAR(MAX) ), 1, 2, )
FROM EMP AS e1
GROUP BY DEPTNO;