1

在 mysql 5.1 中创建表时,我将电话号码指定为整数时出现错误。

错误是“超出范围值”。

我知道我可以将数字指定为 varchar。我只想知道他们还有其他方法吗?

create table emp(
    ename varchar(20), 
    ecity varchar(10),
    salary double,
    enumber integer,
    eaddress varchar(40),
    depttname varchar(25)
);

插入:

insert into emp 
values('priya','delhi',40000,9958465876,'b-64 janak puri new delhi','manager');

错误 1264 (22003):第 1 行的“枚举”列的值超出范围

4

4 回答 4

2

您可以尝试使用varchar来存储电话号码。但是,如果有任何特定的理由接受它,那么您可以使用BIGINT目前您面临的 int 范围问题,即 ,maximum at 4294967295

于 2013-09-25T20:01:44.643 回答
2

只需将 enumber 的数据类型更改为 BigInt 就可以了

于 2013-09-25T19:59:39.713 回答
2

电话号码是不将数字存储为字符串的规则的少数例外之一。这是因为:

  • 通常,数字表示大于字段中可以存储的表示。
  • 一些电话号码的前导零不应被删除,例如:0014255550177
  • 您可能希望/需要使用电话号码存储非数字字符,例如+

只需确保在字段上输入验证时加倍努力,以便电话号码以一致的格式存储,如果您想要执行诸如搜索与特定电话号码匹配的记录之类的操作。

即:780-555-1234, 780 555-1234,780.555.1234都应该删除多余的字符并存储为7805551234.

于 2013-09-25T20:13:01.163 回答
2

mysql 中的 Integer 的最大值为 2147483647,如果使用无符号整数,则为 4294967295。这意味着默认情况下大多数值将超出范围。您可以使用 BIGINT,其有符号范围为 9223372036854775807,无符号范围为 18446744073709551615。我认为,即使考虑到国际拨号,这也足够了。

于 2013-09-25T20:00:47.813 回答