2012-11-26 2 views
5

J'ai un objet XML. Et je veux le désérialiser dans une table en utilisant T-SQL.
Désérialise l'objet XML dans T-SQL

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

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

Comment puis-je stocker ces données dans une table comme ceci:
enter image description here

Merci!

+2

Vous ne pouvez pas. Votre XML n'est pas valide. – GSerg

+0

quelque chose de mal avec votre type xml = 1 n'est pas valide balise xml –

Répondre

11

Votre XML est pas valide - mais si vous aviez quelque chose comme ceci:

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

vous pouvez ensuite utiliser cette XQuery/SQL pour obtenir ce que vous cherchez:

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) 

Je ne suis pas clair comment/ce que la colonne id est censé être - soin d'expliquer?

+0

Il est un 'row_number()', je suppose. – GSerg

+0

Merci, c'est ce dont j'ai besoin !!! – nykolas