将表达式转换为 smallint 数据类型的算术溢出错误

bib*_*hew 3 sql sql-server-2008

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

select(volume * speed)  from traffic_data_replica;
Run Code Online (Sandbox Code Playgroud)

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

消息 8115,级别 16,状态 2,第 1 行
将表达式转换为 smallint 数据类型的算术溢出错误。

Gor*_*off 7

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

select cast(volume as int) * speed
from traffic_data_replica;
Run Code Online (Sandbox Code Playgroud)

您也可以通过乘以 1.0 轻松完成此操作:

select 1.0*volume*speed
from  traffic_data_replica
Run Code Online (Sandbox Code Playgroud)