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