我在SQL Server 2012中有一个带结构的xml列
<root>
<person>
<firstName>Jon</firstName>
<lastName>Johnson</lastName>
</person>
如何检索
等数据Key | Value
-------------------------------------------------------------------
First Name | Jon
Last Name | Johnson
答案 0 :(得分:1)
尝试这样的事情:
DECLARE @input TABLE (ID INT NOT NULL, XmlData XML)
INSERT INTO @input VALUES(1, '<root>
<person>
<firstName>Jon</firstName>
<lastName>Johnson</lastName>
</person></root>')
select
XC.value('local-name(.)', 'varchar(50)'),
XC.value('(.)[1]', 'varchar(50)')
FROM
@input
CROSS APPLY
XmlData.nodes('/root/person/*') AS XT(XC)
WHERE
ID = 1
通过在CROSS APPLY
XPath上使用/nodes/person/*
,您基本上可以获得XML片段的伪表 - 每个子元素<person>
一个。使用local-name(.)
获取XML元素的名称,使用.
获取该XML元素的值。