从xml到使用sql server的表

时间:2014-01-02 17:34:21

标签: sql-server xml xml-parsing rows

我需要从这个转换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

我已经尝试了几个星期,但无济于事。 任何答案都会受到极大的反响。

1 个答案:

答案 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)

这会为您提供如下输出:

enter image description here

您可以在SELECT中使用此INSERT INTO .....,也可以做任何您喜欢的事情。