我首先尝试使用ROUND
函数将我的数据从float转换为int。我将浮点数数字舍入为整数,这很好。
我接下来尝试将1列(totexunits
)中的浮点数据插入另一列int
(Units
)。我收到以下消息:
Msg 232, Level 16, State 3, Line 1
Arithmetic overflow error for type int, value = 5726577093.000000.
我使用了这个sql:
update wkimport2 set units = CONVERT(int, totexunits)
我不确定最新情况。我检查了数据库中的那个数字,它确实显示了任何小数位,但它的行为就像有一些小数位。任何人都知道如何从totexunits
获取列以填充单位列?我被卡住了。
答案 0 :(得分:6)
而是CAST
或Convert
到BIGINT
,因为您的数字对于int来说很大。见int, bigint, smallint, and tinyint
bigint
整数(整数)数据从-2 ^ 63(-9,223,372,036,854,775,808)到2 ^ 63-1 (9,223,372,036,854,775,807)。存储大小为8个字节。
int
从-2 ^ 31(-2,147,483,648)到2 ^ 31 - 1(2,147,483,647)的整数(整数)数据。存储大小为4个字节。 SQL-92 int的同义词是整数。
答案 1 :(得分:1)
int可以保持-2,147,483,648到2,147,483,647的值。看起来您的值5,726,577,093大于int可以容纳的值。请尝试使用bigint。