日期:2014-05-16 浏览次数:20430 次
企鹅上朋友问我: 我这明明是11位的int 为啥还说超出范围了呢,然后发来报警截图
我看到是 buyer_tpl int(13) unsigned NOT NULL,就知道是怎么回事了,打开dev.mysql.com/doc,找到int的章节,截图发给他
手机号码作为数字的话,已经超过了unsigned的峰值4294967296了,给他2个建议
1 将int类型换成bigint
2 将int类型换成varchar(11)的。
他问我 :“ bigint 和 varchar 存数字哪个好? 就11位手机这种。“
我说:“一般用int主要是考虑运算计算以及状态值之类的,很少把包含具体业务意义的字段设置成int,时间戳这种,一般用datetime的,也可以设置成bigint,因为时间戳有涉及到计算的,手机字段一般用varchar居多的。”