2014-04-03 166 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代替。