我问一个关于 sum 节点值的问题:
总结 sql server 2008 中的一些 xml 节点值
请考虑以下代码:
Declare @xml xml
set @xml='<Parent ID="p">
<Child ID="1">1000000000</Child >
<Child ID="2">234650</Child >
<Child ID="3">0</Child >
</Parent >'
Select @xml.value('sum(/Parent[@ID="p"]/Child)','bigint') as Sum
如果你执行它,它会重新运行这个错误:
消息 8114,级别 16,状态 5,第 8 行将数据类型 nvarchar 转换为 bigint 时出错。
问题是它返回这个值:1.00023465E9
如果我以这种方式更改上述查询,则可以:
Declare @xml xml
set @xml='<Parent ID="p">
<Child ID="1">1000000000</Child >
<Child ID="2">234650</Child >
<Child ID="3">0</Child >
</Parent >'
Select @xml.value('sum(/Parent[@ID="p"]/Child)','float') as Sum
为什么 Sql Server 会这样做?