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がこれを行うのですか?