sql 聚合函式 sum 訊息 8115,級別 16 將 expression 轉換為資料型別 int 時出現算術溢位錯誤。

SieSteven發表於2016-11-11

剛才同事問我資源容量有多大,自己得意的寫了一句sql,但是賊打臉。報個大BUG

select sum(sourcesize) from T_Source 

訊息 8115,級別 16,狀態 2,第 2 行
將 expression 轉換為資料型別 int 時出現算術溢位錯誤。

查了一下,網上說轉換為bigint  也有寫的轉換為 decimal 和float  試了一下,確實好使。


bigint:從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型資料(所有數字)。儲存大小為 8 個位元組。

decimal:數字型,128bit,不存在精度損失,常用於銀行帳目計算。(28個有效位)

double:雙精度實型,含位元組數為8,64bit數值範圍-1.7E308~1.7E308(15個有效位)

float:浮點型,含位元組數為4,32bit,數值範圍為-3.4E38~3.4E38(7個有效位


我自己轉換成了decimal 格式  :

select sum(sourcesize) from T_Source 

之後除以1024進製得到了資源總體的大小


參考文件:

1.http://www.studyofnet.com/news/214.html

2.http://bbs.csdn.net/topics/350111462


相關文章