Arithmetic overflow error converting expression to data type int.(將expression轉化為數據類型int時發生算術溢出錯誤)


統計查詢時,如下代碼報錯

select  name,  SUM(itemcount) as cnt
from t1

錯誤信息:Arithmetic overflow error converting expression to data type int.(將expression轉化為數據類型int時發生算術溢出錯誤)

原因:itemcount 為int類型,在sum聚合函數求該列和時,長度超出了int范圍。

 

首先我們來看一下相關數據類型的范圍:

tinyint:從0到255 之間的整數

smallint:從- 215(-32768)到215(32767)之間的整數

int:從- 231(-2147483648)到231(2147483647)之間的整數

bigint:從 -263 (-9223372036854775808) 到263-1 (9223372036854775807) 的整型數據(所有數字)

decimal:從-1038-1到1038-1的固定精度和范圍的數值型數據

 

由此可見,我們需要在sum之前吧該列轉換為范圍更大的類型即可,代碼如下:

select  name,   SUM(cast(itemcount as bigint)) as cnt
from t1

或者

select  name,   SUM(convert(numeric(20,0),itemcount)) as cnt
from t1

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM