数据截断错误和int数据类型

时间:2016-09-25 22:17:35

标签: mysql sql

    document.getElementById("btn").onclick = function(){
    prompt("Thank you");
    }
  

数据截断:第1行的“Hphone”列超出范围值

当我的电话中有9位数时,例如702551212 vs 7025551212它的工作原理和Hphone,Mphone,Ophone都有int(10)。

1 个答案:

答案 0 :(得分:1)

您已将自己的电话号码声明为整数。这是一个非常非常糟糕的主意。将它们声明为字符串:

CREATE TABLE Customer (
    customerid varchar(10) NOT NULL, 
    FirstName varchar(20) NOT NULL, 
    LastName varchar(20) NOT NULL, 
    StreetAddress varchar (30) NOT NULL, 
    City varchar (20)NOT NULL, 
    State varchar (20) NOT NULL, 
    Zip char(5) NOT NULL, 
    Hphone varchar(32) NOT NULL, 
    Mphone varchar(32) NOT NULL, 
    Ophone varchar(32) NOT NULL, 
    PRIMARY KEY (customerid)
);

我不清楚为什么电话号码 - 和其他列 - 被宣布为NOT NULL。不是每个人都有三个电话号码。事实上,有些人的人数较少,而且还有一些人,这表明电话号码确实应该在一个单独的表格中。

我还将邮政编码设为字符串。毕竟,前导零对邮政编码非常重要。

但是,对于您的直接问题,请使用单引号将数字放入字符串中:

insert into customer(customerid, FirstName, LastName, StreetAddress, 
    City, State, Zip, Hphone, Mphone, Ophone) 
values ('123','John','Doe', 'one hoover lane', 'las vegas', 
        'nevada', '89104', '702555122', '702441111', '702332222');