如何将路径选项生成的xml转换为表

时间:2013-04-03 17:35:13

标签: sql-server xml tsql

如何获得下面指定的输出

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 )            

about所需的输出应该类似于

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

1 个答案:

答案 0 :(得分: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