将XML数据反序列化为表

nyk*_*las 2 t-sql

可能重复:
在T-SQL中反序列化XML数据对象

我有这个XML对象:

<params>
    <item>
        <idtype>1</idtype>
        <name>dsf2</name>
        <value>2012-10-05 23:59:59</value>      
    </item>

    <item>
        <idtype>2</idtype>
        <name>msm1</name>
        <value>999</value>      
    </item>
</params>
Run Code Online (Sandbox Code Playgroud)

如何将值数据保存到像这样的表中:
在此输入图像描述

jwa*_*zko 6

DECLARE @XML XML = '<params>
    <item>
        <idtype>1</idtype>
        <name>dsf2</name>
        <value>2012-10-05 23:59:59</value>      
    </item>

    <item>
        <idtype>2</idtype>
        <name>msm1</name>
        <value>999</value>      
    </item>
</params>'

INSERT INTO [TableName] ([idtype], [name], [value])
SELECT    
    [idtype] = TypeNode.value('(idtype)[1]', 'int'),
    [name] = TypeNode.value('(name)[1]', 'nvarchar(50)'),
    [value] = TypeNode.value('(value)[1]', 'nvarchar(50)')
FROM
    @XML.nodes('/params/item') AS XTbl(TypeNode)
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我假设您的表定义如下:

CREATE TABLE [TableName](
    [idtype] [int] NULL,
    [name] [nvarchar](50) NULL,
    [value] [nvarchar](50) NULL
)
Run Code Online (Sandbox Code Playgroud)