【发布时间】:2018-01-31 12:01:36
【问题描述】:
这是我在 SQL Server 中从 XML 列查询的第一次体验,我接近实现我想要的结果。
但是我需要帮助,因为我需要一些元素和属性 - 我成功获得了属性,但是这些元素被合并到一行中,而不是将它们拆分到不同的行中。
数据库中的 XML 记录示例:
<Attributes>
<Map>
<entry key="name" value="John Doe" />
<entry key="department" value="Finance" />
<entry key="employeeNumber" value="123456" />
<entry key="phone">
<value>
<List>
<String>TBA</String>
</List>
</value>
</entry>
<entry key="OrgStructure">
<value>
<List>
<String>top</String>
<String>person</String>
<String>organizationalPerson</String>
<String>user</String>
</List>
</value>
</entry>
<entry key="Membership">
<value>
<List>
<String>Group1</String>
<String>Group2</String>
<String>Group3</String>
</List>
</value>
</entry>
</Map>
</Attributes>
SQL 查询:
SELECT
m.c.value('@key', 'varchar(max)') as xmlkey,
m.c.value('@value', 'varchar(max)') as xmlvalue,
m.c.value('.', 'varchar(max)') as xmlString
from #TEMPDB as s
cross apply s.attributes.nodes('Attributes/Map/entry') as m(c)
结果:
xmlkey xmlvalue xmlString
name John Doe
department Finance
employeeNumber 123456
phone NULL TBA
OrgStructure NULL toppersonorganizationalPersonuser
Membership NULL Group1Group2Group3
期望的结果:
xmlkey xmlvalue xmlString
name John Doe
department Finance
employeeNumber 123456
phone NULL TBA
OrgStructure NULL top
OrgStructure NULL person
OrgStructure NULL organizationalPerson
OrgStructure NULL user
Membership NULL Group1
Membership NULL Group2
Membership NULL Group3
如有任何帮助,我将不胜感激。谢谢!
【问题讨论】:
-
这是一个很好的问题:样本,自己的努力,清晰的解释。从我这边 +1!
标签: sql-server xml tsql xpath xquery