sql - 将表达式转换为数据类型 smallint 时出现算术溢出错误

标签 sql sql-server-2008

我是 SQL Server 的新手,这个问题可能会在这里重复出现。因为我还没有找到解决我的问题的方法。我想在这里发帖。所以这是我的问题

select(volume * speed)  from traffic_data_replica;

我正在尝试将两列的值相乘,两列的数据类型都是 smallint。我得到的错误是:

Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type smallint.

最佳答案

在计算之前将其中一个值转换为“更大”的类型:

select cast(volume as int) * speed
from traffic_data_replica;

您也可以通过乘以 1.0 轻松地做到这一点:

select 1.0*volume*speed
from  traffic_data_replica

关于sql - 将表达式转换为数据类型 smallint 时出现算术溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702571/

相关文章:

sql-server - 如何在 SQL Server 2008 上调试 EXCEPTION_ACCESS_VIOLATION

sql - 如何选择所有具有以特定数字开头的 bigint 字段的记录?

asp.net - 存储过程用户交互

mysql - 具体的Mysql Select查询需要帮助

sql - 在sql查询中使用iif而无需其他 Access

php - 如何在迭代 DatePeriod 时包括今天?

sql-server - 在sql中查找字符串长度而不从零开始

sql - 编写 SQL Server 数据库中所有数据的脚本

MySQL 检查多个条件之间是否具有唯一标识符

sql - 当源未更改时,我们可以多次运行合并(Oracle)查询吗