SQL在XML中汇总所有浮点节点

时间:2014-12-08 04:57:45

标签: sql xml sql-server-2012

我有xml如下:

<float52>7.667000000000000e+003</float52>
<float59>7.667000000000000e+003</float59>
<float60>3.766700000000000e+004</float60>
<ntext2>Other</ntext2>
<nvarchar3>Idea</nvarchar3>
<nvarchar4>Budget</nvarchar4>

我需要对此xml中的所有浮点节点求和。我可以像这样提取每个浮点数:

@xml.value('(/float52/node())[1]','float') as FloatValue

但是如何在没有硬编码列名的情况下对所有这些浮点节点求和?

1 个答案:

答案 0 :(得分:0)

您可以使用sum()

select @xml.value('sum(*)', 'float');

它将计算可以转换为某种数字的所有节点的总和。

如果您想要更具体,可以在元素名称中包含包含文本float的元素。

select @xml.value('sum(*[contains(local-name(), "float")])', 'float');