在特定情况下无法在选择语句中执行算术运算

时间:2018-08-03 09:28:04

标签: sql-server sql-server-2016

当我在select语句中进行一些乘法时,我发现SQL Server抛出算术溢出错误的特殊情况。

当我在W3Schools SQL窗口中执行相同操作时,它起作用了。以下是我的查询在哪里引发错误。我尝试了多种排列组合,但在大多数情况下

失败
SELECT 20000000 * 130    
  

信息8115,第16级,州2,第4行
  将表达式转换为数据类型int的算术溢出错误。

消息窗口:

SQL MESSAGE WINDOW

输出窗口:

SQL OUTPUT WINDOW

版本信息:

SQL VERSION DESCRIPTION

2 个答案:

答案 0 :(得分:0)

类型为int还不够,请尝试使用float。

SELECT cast(20000000 as float) * cast(130 as float)

结果是优先级较高的参数的数据类型。但是,如果您有2个int,则不进行强制转换就无法获得浮动 https://docs.microsoft.com/it-it/sql/t-sql/language-elements/multiply-transact-sql?view=sql-server-2017

我用过float,但是bigint不变

答案 1 :(得分:0)

SELECT CAST(20000000 AS BIGINT)* 130