以下代码仅返回6行,只有第1个值。我想要6行各自的值
DECLARE @txml XML
SET @txml ='
<row ch="	" unicode_value="9" cnt="3" />
<row ch="
" unicode_value="10" cnt="5" />
<row ch="
" unicode_value="13" cnt="5" />
<row ch=" " unicode_value="32" cnt="962" />
<row ch="&" 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 )
答案 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 强>