将FLOAT转换为INT

时间:2014-04-03 17:53:10

标签: sql sql-server

我首先尝试使用ROUND函数将我的数据从float转换为int。我将浮点数数字舍入为整数,这很好。

我接下来尝试将1列(totexunits)中的浮点数据插入另一列intUnits)。我收到以下消息:

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获取列以填充单位列?我被卡住了。

2 个答案:

答案 0 :(得分:6)

而是CASTConvertBIGINT,因为您的数字对于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。