在MySQL中,我使用以下代码构建了一个表:
BUILD TABLE user
(
userName char(25) NOT NULL PRIMARY KEY,
firstName char(25) NOT NULL,
lastName char(25) NOT NULL,
userEmail char(25) NOT NULL,
userPhone int(10) NOT NULL,
);
假设我发出以下命令:
INSERT INTO `user`(`userName`, `firstName`, `lastName`, `userEmail`, `userPhone`)
VALUES ("JDoe","John","Doe","jdoe@nothing.net", 9725550145)
MySQL运行命令没有问题,并将信息放在表中。但是,当我检索所述John Doe的信息时,他的电话号码显示为2147483647。
在许多条目中,我注意到如果区号的第一个数字大于2,那么它们会得到相同的数字。我做错了什么,如何解决这个问题,以便每个人都有自己的电话号码,而不是MySQL分配给他们的这个看似随机的值?
谢天谢地。
答案 0 :(得分:8)
不要这样做,电话号码不整数有很好的理由:
0199857514
+34199857514
#992,514
sip:01199857514@stackoverflow.net
如果您要将手机号码存储为整数,则以后会遇到重大限制和问题。
要回答您的问题:您不能将电话号码存储为整数。
答案 1 :(得分:3)
将您的专栏userPhone int(10) NOT NULL
更改为userPhone BIGINT NOT NULL
如果您需要更改列类型,请执行以下命令:
ALTER TABLE user MODIFY userPhone BIGINT NOT NULL;
另请花点时间阅读MySql docs上的数字类型
http://dev.mysql.com/doc/refman/5.7/en/numeric-types.html
正如评论中所指出的,你不应该使用数字类型来存储电话号码,因为有前导0的数字,如果它存储为数字,你将失去这些信息。由@GolezTrol和@GordonLinoff指出