2013-04-03 99 views
0

下面如何从路径选项生成的XML转换成表格

DECLARE @txml XML 
SET @txml ='<row><ch> </ch><unicode_value>9</unicode_value><cnt>3</cnt></row><row><ch> 
</ch><unicode_value>10</unicode_value><cnt>5</cnt></row><row><ch> 
</ch><unicode_value>13</unicode_value><cnt>5</cnt></row><row> 
<ch> </ch><unicode_value>32</unicode_value><cnt>962</cnt></row> 
<row><ch>&amp;</ch><unicode_value>38</unicode_value><cnt>32</cnt></row> 
' 
SELECT x.value('cnt', 'int') AS cnt, 
    x.value('ch', 'nvarchar(10)') AS ch, 
    x.value('unicode_value', 'int') AS unicode_value 
FROM @txml.nodes('/row') AS tbl(x)    

如何获得指定输出约所需的输出应该类似于像

cnt | ch | unicode_value| 
32 | & | 38| 
8 | (| 40| 

+1

问题是,您的XML具有真正的纯结构。应该相当' 9 10',以指定一个元素结束,另一个开始。 – MarcinJuraszek

+0

谢谢你。我已改变的XML结构为 ' \t 9 10' 现在如何获得所需的结果 –

回答

1

随着你应该做以下新的XML结构:

SELECT x.value('(cnt)[1]', 'int') AS cnt, 
    x.value('(ch)[1]', 'nvarchar(10)') AS ch, 
    x.value('(unicode_value[1])', 'int') AS unicode_value 
FROM @txml.nodes('/row') AS tbl(x)   

DEMO

+0

谢谢先生。有效。 –