[英]SQL Server - returning xml child nodes for xml column
给定表T列:
ID UNIQUEIDENTIFIER
CreatedDate DATETIME
XmlData XML
XmlData的结构如下:
<application>
<details firstname="first" lastname="last">
<statement>statement</statement>
</details>
<educationHistory>
<education subject="subject1" />
<education subject="subject2" />
</educationHistory>
<experienceHistory>
<examiningExperienceHistory>
<examiningExperience module="module1" />
<examiningExperience module="module2" />
</examiningExperienceHistory>
<teachingExperienceHistory>
<teachingExperience module="module1" />
<teachingExperience module="module2" />
</teachingExperienceHistory>
</experienceHistory>
</application>
我需要像这样返回一个提取物:
ID Date FirstName LastName Education ExaminingExp TeachingExp
-----------------------------------------------------------------------
1 02-10-2012 First Last <xmlextract> <xmlextract> <xmlextract>
到目前为止,我有:
SELECT ID,
CreatedDate [Date],
XmlData.value('(application/details/@firstname)[1]','varchar(max)') [FirstName],
XmlData.value('(application/details/@lastname)[1]','varchar(max)') [LastName]
FROM T
我在最后三列中苦苦挣扎。 对于每个记录,我需要列出教学/考试经验和教育。 有人可以帮忙吗?
使用.query
来提取xml。
例如
select
XmlData.query('/application/educationHistory/*'),
XmlData.query('/application/experienceHistory/examiningExperienceHistory/*'),
XmlData.query('/application/experienceHistory/teachingExperienceHistory/*')
尝试这个:
SELECT ID, Created [DATE]
XmlData.value('(application/details/@firstname)[1]','varchar(max)') [FirstName],
XmlData.value('(application/details/@lastname)[1]','varchar(max)') [LastName],
XmlData.query('/application/educationHistory'),
XmlData.query('/application/experienceHistory/examiningExperienceHistory'),
XmlData.query('/application/experienceHistory/teachingExperienceHistory')
FROM T
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.