我需要从这个转换xml:
<Row>
<Columns>
<Column>
<Value>BB1</Value>
<Name>Location</Name>
</Column>
<Column>
<Value>1593338</Value>
<Name>Location_Key</Name>
</Column>
<Column>
<Value>0</Value>
<Name>Quantity</Name>
</Column>
</Columns>
</Row>
<Row>
<Columns>
<Column>
<Value>DR11 40</Value>
<Name>Location</Name>
</Column>
<Column>
<Value>1593251</Value>
<Name>Location_Key</Name>
</Column>
<Column>
<Value>0</Value>
<Name>Quantity</Name>
</Column>
</Columns>
</Row>
这个包含这些列和行的表
(Location) (Location_Key) (Quantity)
BB1 1593338 0
DR11 1593251 0
使用Sql Server
我已经尝试了几个星期,但无济于事。 任何答案都会受到极大的反响。
答案 0 :(得分:2)
试试这个:
DECLARE @input XML = '<Row>
<Columns>
<Column>
<Value>BB1</Value>
<Name>Location</Name>
</Column>
<Column>
<Value>1593338</Value>
<Name>Location_Key</Name>
</Column>
<Column>
<Value>0</Value>
<Name>Quantity</Name>
</Column>
</Columns>
</Row>
<Row>
<Columns>
<Column>
<Value>DR11 40</Value>
<Name>Location</Name>
</Column>
<Column>
<Value>1593251</Value>
<Name>Location_Key</Name>
</Column>
<Column>
<Value>0</Value>
<Name>Quantity</Name>
</Column>
</Columns>
</Row>'
SELECT
Location = xc.value('(Column[Name="Location"]/Value)[1]', 'varchar(20)'),
LocationKey = xc.value('(Column[Name="Location_Key"]/Value)[1]', 'varchar(20)'),
Quantity = xc.value('(Column[Name="Quantity"]/Value)[1]', 'int')
FROM
@input.nodes('/Row/Columns') AS XT(XC)
这会为您提供如下输出:
您可以在SELECT
中使用此INSERT INTO .....
,也可以做任何您喜欢的事情。