请问,如何把一段以元素为中心的XML转成表(用select...FROM @sXML.nodes方式)

zzhong2 2017-03-14 12:13:51
下面一段XML(以元素为中心的)
<row>
<NodeID>1</NodeID>
<NodeText>鼻咽部</NodeText>
<DepartmentID>1</DepartmentID>
</row>
<row>
<NodeID>2</NodeID>
<Parent>1</Parent>
<NodeText>血管</NodeText>
<DepartmentID>1</DepartmentID>
</row>
<row>
<NodeID>3</NodeID>
<Parent>1</Parent>
<NodeText>睾丸癌</NodeText>
<DepartmentID>1</DepartmentID>
</row>
要转成下面样子的表(用select...FROM @sXML.nodes方式)
NodeID Parent NodeText DepartmentID
1 NULL 鼻咽部 1
2 1 血管 1
3 1 睾丸癌 1

请问各位高人如何用select...FROM @sXML.nodes方式完成上面的转换?
...全文
264 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nwctim 2017-03-14
  • 打赏
  • 举报
回复
DECLARE @XML XML SET @XML = '<row> <NodeID>1</NodeID> <NodeText>鼻咽部</NodeText> <DepartmentID>1</DepartmentID> </row> <row> <NodeID>2</NodeID> <Parent>1</Parent> <NodeText>血管</NodeText> <DepartmentID>1</DepartmentID> </row> <row> <NodeID>3</NodeID> <Parent>1</Parent> <NodeText>睾丸癌</NodeText> <DepartmentID>1</DepartmentID> </row>' SELECT doc.node.value('NodeID[1]', 'varchar(5)') as ID ,doc.node.value('Parent[1]', 'varchar(32)') AS Parent ,doc.node.value('NodeText[1]', 'varchar(32)') AS NodeText ,doc.node.value('DepartmentID[1]', 'varchar(32)') AS DepartmentID FROM @XML.nodes('/row') AS doc(node)
zzhong2 2017-03-14
  • 打赏
  • 举报
回复
多谢nwctim 大侠,要的就是这个结果

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧