我试图将XML列提取到不同的列中。我需要弄清楚如何在SQL语句中执行此操作。
以下是来自" ItemSpecifics"的一条记录。柱: " ItemsSpecifics"已存储在sql数据库Table" ItemEbayID"作为xml字段 而且我试图拆分这个专栏。
<SelectedValues haveDefaultsBeenSet="true">
<SelectedValue>
<Name>Consignment Status</Name>
<Value>False</Value>
</SelectedValue>
<SelectedValue>
<Name>Salesperson</Name>
<Value>'Vasya'</Value>
</SelectedValue>
<SelectedValue>
<Name>Model</Name>
<Value />
</SelectedValue>
<SelectedValue>
<Name>Salesperson Paid</Name>
<Value>False</Value>
</SelectedValue>
<SelectedValue>
<Name>Resolved</Name>
<Value>False</Value>
</SelectedValue>
<SelectedValue>
<Name>Quality Issue</Name>
<Value>'None'</Value>
</SelectedValue>
</SelectedValues>
我查看了许多示例,但没有一个可以应用于此xml字段。
答案 0 :(得分:2)
declare @xml xml = '<SelectedValues>
<SelectedValue>
<Name>Consignment Status</Name>
<Value>False</Value>
</SelectedValue>
<SelectedValue>
<Name>Salesperson</Name>
<Value>''Vasya''</Value>
</SelectedValue>
<SelectedValue>
<Name>Model</Name>
<Value />
</SelectedValue>
<SelectedValue>
<Name>Salesperson Paid</Name>
<Value>False</Value>
</SelectedValue>
<SelectedValue>
<Name>Resolved</Name>
<Value>False</Value>
</SelectedValue>
<SelectedValue>
<Name>Quality Issue</Name>
<Value>''None''</Value>
</SelectedValue>
</SelectedValues>'
select t.c.value('Name[1]', 'nvarchar(500)'),
t.c.value('Value[1]', 'nvarchar(500)')
from @xml.nodes('//SelectedValue') t(c)