我已将带有国家/地区代码的电话/手机号码存储在mysql表中。为此,我在两个字段中都使用了十进制数据类型(例如,对于十进制(5,0)的拨号代码,十进制(20,0)的mobileno)。我的手机号码和拨号代码或国家/地区代码必须为数字。现在,我将使用varchar(5)更改拨号代码,使用varchar(20)更改mobileno。
表现还可以吗?谁能告诉我mobileno(任何国家)的最大长度是多少?如果在上述情况下,是否还希望使用其他任何数据类型(例如flote或integer)?如果是,那为什么呢?
谢谢。
最佳答案
这个问题冒着征求意见的风险。但是,我认为它有一个“正确”或至少“更好”的答案。
存储数字时,应使用数字类型。数字具有被排序和能够对其进行算术运算的特性。许多东西都存储为不具有这些属性的数字-考虑信用卡号,邮政编码和FIP代码。电话号码也属于此类。
一个重要的考虑因素是前导0是否重要。对于实际数字,这些并不重要。对于碰巧使用数字的代码,它们很重要。
因此,我建议您将值存储为字符串。我不知道最长的电话号码是多少,但我不希望我的数据库依赖于今天的最大值。只需使用varchar(255)
之类的东西,在很长一段时间内应该已经足够了。