关于sum(int)报错:将expression转化为数据类型int时发生算术溢出错误

摘要:
在SQL Server中,列的数据在int范围内。但是,当使用sum聚合函数对列求和时,将表达式转换为数据类型int时会发生算术溢出错误。smallint数据类型的存储范围仅为-32768到32767,tinyint数据类型只能存储0到255范围内的数字。当我们对int数据执行求和操作时,可能出现算术溢出的问题。此时,我们可以在求和操作之前将原始列的数据类型更改为bigint。

在SQL Server 中,某列的数据都在int范围之内,但是使用sum聚集函数求该列和的时候,出现“将expression转化为数据类型int时发生算术溢出错误”。

首先,我们先看看SQL Server 定义的数据类型的长度:

  • bigint   数据类型存储从   -2^63   (-9223372036854775808)   到   2^63-1   (9223372036854775807)   范围内的数字。存储大小为   8   个字节。   
  •     int   数据类型的存储范围是   -2,147,483,648   至   2,147,483,647(每个值需   4   个字节的存储空间)。   
  •     smallint   数据类型的存储范围只有   -32,768   至   32,767(每个值需   2   个字节的存储空间),tinyint   数据类型只能存储   0   至   255   范围内的数字(每个值需   1   个字节的存储空间)。

当我们对int类型的数据做sum操作的时候,就有可能发生算术溢出的问题。此时,我们可以采用在做sum操作前,将原有列的数据类型更改为bigint 。

 

SQL 语句: 

1. select   sum(cast(colName   as   bigint))   from   TableName

2. select   sum(convert(numeric(20,0),colName))   from   TableName

免责声明:文章转载自《关于sum(int)报错:将expression转化为数据类型int时发生算术溢出错误》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于vue-cli3的vue项目移动端样式适配,lib-flexible和postcss-px2remgulp前端自动化环境搭建详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqlite3 数据类型 批量插入

内容来自sqlie的官网(http://www.sqlite.org/datatype3.html)大部分SQL数据库引擎使用静态数据类型,数据的类型取决于它的存储单元(即所在的列)的类型。 SQLite3采用了动态的数据类型,存储值的数据类型和数值本身相关,而不是由它的字段的类型决定。SQLite3的动态数据类型能够向后兼容其它数据库普遍使用的静态类型,...

超详攻略!Databricks 数据洞察

简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/spark(当前产品提供¥599首购试用活动,欢迎试用!) 开源大数据社区 & 阿里云 EMR 系列直播 第四期 主题:Databricks 数据洞察...

数据加密与数据压缩后加密的效率

最近做一个数据库数据的导入导出的工具,在解决了数据导入的自动表排序问题后,客户要求对传输的数据加密和解密 1. 先测试了当前的数据大小变化和加密(RSA)耗费时间:    常规导出的业务数据 在不加密的情况下才采用二进制存储大概300K左右    加密后,采用二进制存储数据膨胀到了8M左右    加密的时间稍微长了一下,正常导出需要几秒钟,现在多了几十秒。...

MySql通过Data恢复数据库数据

公司的服务器开不了机,把硬盘装在其他机器上面,文件是没有丢失,可是数据库开不了了。上网查了下,用DATA恢复了数据。 1、先通过MYSQL目录下的my.ini配置文件找到 datadir的文件夹地址。data里面的文件就是数据库的信息,备份复制出来。 2、重新安装相同版本的mysql数据库,找到新安装的mysql数据库Data的地址,用之前备份的替换掉D...

前端 vue表格数据导出Excel 文件实现

实现思路 使用json2csv将后台json数据转化为csv格式数据 采用创建Blob(二进制大对象)的方式来存放缓存数据;生成下载链接; 创建一个a标签,设置href和download属性 触发a标签的点击事件实现下载 实现如下: 表格为 <Table :columns="columns" :data="listdata"></Ta...

浅谈JEECG多数据源的使用

首先,简单的介绍下什么是JEECG。JEECG(J2EECode Generation)是一款基于代码生成器的免费开源的快速开发平台,使用JEECG可以简单快速地开发出企业级的Web应用系统。JEECG提倡简单功能由代码生成器直接生成,复杂业务采用表单自定义,业务流程使用工作流来实现、扩展出任务接口,由开发者编写特殊业务逻辑。 下面我们重点讲解下JEECG...