Sql server 插入时:将表达式转换为数据类型int时发生算术溢出错误

Sql server 插入时:将表达式转换为数据类型int时发生算术溢出错误,sql-server,Sql Server,我尝试创建第三个电话号码表,我编写了以下命令: CREATE TABLE MYPHONE (EMPLOYEE_ID INT, PHONE_NUMBER INT) INSERT INTO MYPHONE VALUES (1 , 7894561230) 但是,当我尝试执行上一个INSERT命令时,出现了一个错误: Msg 8115,16级,状态2,第46行 将表达式转换为数据类型int时出现算术溢出错误 INT数据类型的允许范围为-2147483648到2147483647 您可以获得有关允许

我尝试创建第三个电话号码表,我编写了以下命令:

CREATE TABLE MYPHONE (EMPLOYEE_ID INT, PHONE_NUMBER INT)

INSERT INTO MYPHONE 
VALUES (1 , 7894561230)
但是,当我尝试执行上一个
INSERT
命令时,出现了一个错误:

Msg 8115,16级,状态2,第46行
将表达式转换为数据类型int时出现算术溢出错误


INT
数据类型的允许范围为-21474836482147483647

您可以获得有关允许范围的更多详细信息


您正在尝试插入超出该范围的内容。对于电话号码,最好选择
VARCHAR
数据类型。如果您仍然想选择数字,在这种情况下,请使用
BIGINT
而不是
INT

允许的
INT
数据类型范围为-21474836482147483647

您可以获得有关允许范围的更多详细信息


您正在尝试插入超出该范围的内容。对于电话号码,最好选择
VARCHAR
数据类型。如果您仍然想选择数字,在这种情况下,请使用
BIGINT
而不是
INT

一个
int
可能不是电话号码的最佳数据类型-你不需要对电话号码做任何算术运算,那么为什么要使用数字数据类型呢?将其存储为字符串(或SQL中的
varchar


此外,如果您确实需要将值存储为
int
,则2147483647是最大值-任何更高的值都会“溢出”,因此您会得到错误。一个
long
(或SQL中的
bigint
)最多允许9223372036854775808的值。

一个
int
可能不是电话号码的最佳数据类型-你不需要对电话号码进行任何算术运算,那么为什么要使用数字数据类型呢?将其存储为字符串(或SQL中的
varchar

此外,如果您确实需要将值存储为
int
,则2147483647是最大值-任何更高的值都会“溢出”,因此您会得到错误。一个
long
(或SQL中的
bigint
)将允许最大值为9223372036854775808