2014-04-03 164 views
3

我首先尝试使用ROUND函数将我的数据从float转换为int。我将浮点数据四舍五入为整数,这很好。将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获得专栏来填充单位栏?我卡住了。

回答

6

宁可CASTConvertBIGINT,因为你的号码对于int大。看到从-2^63(-9,223,372,036,854,775,808)通过2^63-1 (9,223,372,036,854,775,807)int, bigint, smallint, and tinyint

BIGINT

整型(整数)的数据。存储大小是8个字节。

INT

整型(整数)从-2^31(2,147,483,648)通过2^31数据 - 1(2,147,483,647)。存储大小是4个字节。 int的同义词是SQL-92 。

+0

+1,但目标列也需要更改。即使您将值转换为BIGINT,对于列来说它仍然太大。 –

1

int可以从-2,147,483,648到2,147,483,647的值。看起来你的价值5,726,577,093大于int可以持有的价值。尝试bigint代替。