在T-SQL中反序列化XML对象

时间:2012-11-26 10:13:11

标签: sql-server xml tsql xquery

我有一个XML对象。我想使用T-SQL将其反序列化为一个表。

<Params>
    <type = 1> 
        <value> 10 </value>
    </type>

    <type = 2> 
        <value> abc </value>
    </type>
</Params>

如何将此数据存储到如下表格中:
enter image description here

谢谢!

1 个答案:

答案 0 :(得分:11)

你的XML无效 - 但如果你有这样的东西:

<Params>
    <type ID="1"> 
        <value> 10 </value>
    </type>
    <type ID="2"> 
        <value> abc </value>
    </type>
</Params>

然后您可以使用此XQuery / SQL语句来获取您正在寻找的内容:

DECLARE @XML XML = '<Params>
    <type ID="1"> 
        <value> 10 </value>
    </type>
    <type ID="2"> 
        <value> abc </value>
    </type>
</Params>'

SELECT
    Type = TypeNode.value('@ID', 'int'),
    NodeValue = TypeNode.value('(value)[1]', 'varchar(50)')
FROM
    @XML.nodes('/Params/type') AS XTbl(TypeNode)

我不清楚id列应该是什么/应该是什么 - 小心解释?