我有以下查询:
它生成输出的代码是:
我希望将每个组拆分为单独的行(放入一个名为XMLFormat的列中):
我尝试使用表和列别名的方法:
但是这个查询只生成一行数据,整个XML都在单个的XMLFormat字段中。
我认为我可能需要使用.nodes()方法,但是当我将.nodes('/Students/Student')添加到t(c)别名时,会出现“附近有语法错误”的提示。
我想避免在使用.nodes()方法之前将数据放入XML变量中,因为文本可能非常长。
SELECT
101 AS TeacherID
,s.ID
,s.First
,s.Last
FROM dbo.Students s
FOR XML PATH('Student'), ROOT('Students')
它生成输出的代码是:
。
<Students>
<Student>
<TeacherID>101</TeacherID>
<ID>14</ID>
<First>Mark</First>
<Last>Smith</Last>
</Student>
<Student>
<TeacherID>101</TeacherID>
<ID>15</ID>
<First>Josephina</First>
<Last>Hewitt</Last>
</Student>
</Students>
我希望将每个组拆分为单独的行(放入一个名为XMLFormat的列中):
AdministratorID AdministratorName XMLFormat
------------------------------------------------------------------------------------------------------------------------------------
125 Bertha <Student><TeacherID>101</TeacherID><ID>14</ID><First>Mark</First><Last>Smith</Last></Student>
125 Bertha <Student><TeacherID>101</TeacherID><ID>15</ID><First>Josephina</First><Last>Hewitt</Last></Student>
我尝试使用表和列别名的方法:
SELECT 125 AS AdministratorID,
'Bertha' AS AdministratorName,
t.c AS XMLFormat
FROM
(
SELECT
101 AS TeacherID
,s.ID
,s.First
,s.Last
FROM dbo.Students s
FOR XML PATH('Student'), ROOT('Students')
) t(c)
但是这个查询只生成一行数据,整个XML都在单个的XMLFormat字段中。
我认为我可能需要使用.nodes()方法,但是当我将.nodes('/Students/Student')添加到t(c)别名时,会出现“附近有语法错误”的提示。
我想避免在使用.nodes()方法之前将数据放入XML变量中,因为文本可能非常长。