将FLOAT转换为INT

Jef*_*eff 3 sql sql-server

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

我接下来试图将浮点数据从1列(totexunits)插入到另一列int(Units).我收到以下消息:

Msg 232, Level 16, State 3, Line 1
Arithmetic overflow error for type int, value = 5726577093.000000.
Run Code Online (Sandbox Code Playgroud)

我用过这个sql:

update wkimport2 set units = CONVERT(int, totexunits)
Run Code Online (Sandbox Code Playgroud)

我不知道最近发生了什么.我检查了数据库中的那个数字,它确实显示了任何小数位,但它的行为就像有一些小数位.任何人都知道如何从列totexunits填充单位列?我被卡住了.

Adr*_*der 6

相反CASTConvertBIGINT,因为你的号码是大的INT.请参见int,bigint,smallint和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个字节.int的SQL-92同义词是整数.