Sql server 如何以下面提到的格式读取此XML-SQL Server 2012
任何帮助都将不胜感激!正在尝试将下面的XML转换为SQL Server中的表结构Sql server 如何以下面提到的格式读取此XML-SQL Server 2012,sql-server,xml,sql-server-2012,Sql Server,Xml,Sql Server 2012,任何帮助都将不胜感激!正在尝试将下面的XML转换为SQL Server中的表结构 <SearchKey EntityType="2" userid="12" QName="search1"> <Groups> <Group seq="1"> <GroupID>1</GroupID> <Column seq="1">2</Column>
<SearchKey EntityType="2" userid="12" QName="search1">
<Groups>
<Group seq="1">
<GroupID>1</GroupID>
<Column seq="1">2</Column>
<Column seq="2">3</Column>
</Group>
<Group seq="2">
<GroupID>2</GroupID>
<Column seq="1">1</Column>
<Column seq="2">2</Column>
</Group>
<Group seq="3">
<GroupID>3</GroupID>
<Group seq="1">1</Group>
<Column seq="2">2</Column>
</Group>
<Group seq="4">
<GroupID>4</GroupID>
<Group seq="1">1</Group>
<Group seq="2">2</Group>
<Column seq="3">3</Column>
</Group>
</Groups>
</SearchKey>
下表格式:
GroupID SeqID ColumnValue ChildGroupID
1 1 2 NULL
1 2 3 NULL
3 1 NULL 1
3 2 2 NULL
4 1 NULL 1
4 2 NULL 2
4 3 3 NULL
还尝试了以下代码,但无法检索上述格式的记录:
SELECT a.b.value('GroupID[1]', 'varchar(10)') AS GroupID
,a.b.value('(@GrpSeq)[1]', 'varchar(50)') AS GrpSeq
,a.b.value('(GroupID)[1]', 'varchar(50)') AS GroupID
,a.b.value('(Column/@ColSeq)[1]', 'varchar(50)') AS ColSeq
FROM @XMLString.nodes('SearchKey/Groups/Group') a(b)
感谢所有帮助:通过read,您的意思是真的要将XML转换为所显示的表结构吗?这是一个文本表还是要输出HTML?你的问题目前还不清楚。哦,对不起,不清楚。想要将XML转换为表结构。请编辑您的问题以反映您试图完成的任务。为什么在节点子句中遗漏了SearchKey?它存在于XML中,您需要在@XMLString.nodes'/SearchKey/Groups/Group'ab中的节点中使用它,我可以使用@XMLString.nodes'/SearchKey/Groups/Group'ab读取它们,谢谢Mikael!但当存在子组时,我很难转换它们。例如:4123
SELECT a.b.value('GroupID[1]', 'varchar(10)') AS GroupID
,a.b.value('(@GrpSeq)[1]', 'varchar(50)') AS GrpSeq
,a.b.value('(GroupID)[1]', 'varchar(50)') AS GroupID
,a.b.value('(Column/@ColSeq)[1]', 'varchar(50)') AS ColSeq
FROM @XMLString.nodes('SearchKey/Groups/Group') a(b)