如何将xml值转换为表

时间:2013-04-03 16:54:28

标签: sql-server xml tsql

以下代码仅返回6行,只有第1个值。我想要6行各自的值

    DECLARE @txml XML 
    SET @txml ='
    <row ch="&#x9;" unicode_value="9" cnt="3" />
    <row ch="&#xA;" unicode_value="10" cnt="5" />
    <row ch="&#xD;" unicode_value="13" cnt="5" />
    <row ch=" " unicode_value="32" cnt="962" />
    <row ch="&amp;" unicode_value="38" cnt="32" />
    <row ch="(" unicode_value="40" cnt="8" />
    '
    SELECT x.value('(/row/@cnt)[1]', 'int') AS cnt
    FROM  @txml.nodes('/row') AS tbl( x )

1 个答案:

答案 0 :(得分:1)

您正在获取第一个项目值,因为这是您的XPath表达式的定义方式:'(row/@cnt)[1]'

第一次出现匹配[1]表达式的

row/@cnt个状态,从第一个cnt元素获取<row>属性值的内容。

将您的查询更改为:

SELECT x.value('@cnt', 'int') AS cnt
FROM  @txml.nodes('/row') AS tbl( x )

当前cnt元素需要<row>属性值,而不是第一个属性值。

<强> DEMO