首页 > 解决方案 > 将表达式转换为数据类型 int 的算术溢出错误,我该如何解决?

问题描述

这是创建表的代码。

CREATE TABLE CUSTOMERS
(
    Customer_ID INT NOT NULL,
    CHECK(Customer_ID <= 11),
    First_Name varchar(20) NOT NULL,
    Last_Name varchar(30),
    Home_Street varchar(30),
    Home_City varchar(20),
    Home_State varchar(2),
    Home_Zip varchar(5),
    PhoneNumber varchar(11) NOT NULL
);

ALTER TABLE CUSTOMERS
ADD CONSTRAINT PK_CUSTOMERS PRIMARY KEY(Customer_ID);

然后我尝试将数据(使用此代码)插入表中,这就是我得到这个错误的地方。

INSERT INTO dbo.CUSTOMERS(Customer_ID, First_Name, Last_Name, Home_Street, Home_City, Home_State, Home_Zip, PhoneNumber)
VALUES (11223344556, 'John', 'Doe', '1234 Hand Street', 'Wahiawa', 'HI', 96786, 2535551267);

我做错了什么,我能做些什么来解决这个问题?

标签: sqlsql-servertsql

解决方案


据我了解,您正在检查长度,Customer_ID <=11因此您应该提到 len(Customer_ID)<=11 它会起作用,并且您应该将 Customer_ID 的数据类型更改 intbigint

CREATE TABLE CUSTOMERS
    (
    Customer_ID bigINT NOT NULL,
    CHECK(len(Customer_ID)<=11),
    First_Name varchar(20) NOT NULL,
    Last_Name varchar(30),
    Home_Street varchar(30),
    Home_City varchar(20),
    Home_State varchar(2),
    Home_Zip varchar(5),
    PhoneNumber varchar(11) NOT NULL
    );
    ALTER TABLE CUSTOMERS
    ADD CONSTRAINT PK_CUSTOMERS
    PRIMARY KEY(Customer_ID);

    INSERT INTO dbo.CUSTOMERS(Customer_ID,First_Name,Last_Name,Home_Street,
    Home_City,Home_State,Home_Zip,PhoneNumber)
    VALUES(11223344556,'John','Doe','1234 Hand Street', 
    'Wahiawa','HI',96786,2535551267);

推荐阅读