【问题标题】:On Insert: Arithmetic overflow error converting expression to data type int插入时:将表达式转换为数据类型 int 的算术溢出错误
【发布时间】:2020-02-17 04:57:51
【问题描述】:

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

CREATE TABLE MYPHONE (EMPLOYEE_ID INT, PHONE_NUMBER INT)

INSERT INTO MYPHONE 
VALUES (1 , 7894561230)

但是当我尝试执行之前的INSERT 命令时,我得到了一个错误:

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:

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

    另外,如果您确实需要将值存储为int,则最大值为 2,147,483,647 - 任何更高的值都会“溢出”,因此您会遇到错误。 long(或 SQL 中的 bigint)将允许最大为 9,223,372,036,854,775,808 的值。

    【讨论】:

      【解决方案2】:

      INT 数据类型的允许范围是 -2,147,483,6482,147,483,647

      您可以获取更多关于允许范围here的详细信息

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

      【讨论】:

        猜你喜欢
        • 2011-10-07
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2022-01-02
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多