sql 聚合函数 sum 消息 8115,级别 16 将 expression 转换为数据类型 int 时出现算术溢出错误。

来源:互联网 发布:gddr5x和hbm2知乎 编辑:程序博客网 时间:2024/06/05 16:50

刚才同事问我资源容量有多大,自己得意的写了一句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


0 0