0

我已经在 mysql 表中存储了带有国家代码的电话/手机号码。为此,我对这两个字段都使用了十进制数据类型(例如,对于拨号代码十进制(5,0),mobileno 十进制(20,0))。我的手机号码和拨号代码或国家代码必须是数字。现在我将使用 varchar(5) 来更改拨号代码,使用 varchar(20) 来更改 mobileno。

性能好吗?谁能告诉我mobileno(任何国家)的最大长度应该是多少?对于上述情况,如果有任何其他数据类型(如 flote 或 integer)更可取?如果是,那为什么?

谢谢。

4

1 回答 1

1

这个问题冒着征求意见的风险。但是,我认为它有一个“正确”或至少“更好”的答案。

存储数字时应该使用数字类型。数字具有有序和能够对它们进行算术运算的特性。许多东西被存储为没有这些属性的数字——想想信用卡号码、邮政编码和 FIP 代码。电话号码也属于这一类。

一个重要的考虑因素是前导 0 是否重要。对于实际数字,这些并不重要。对于碰巧使用数字的代码,它们很重要。

因此,我建议您将值存储为字符串。我不知道最长的电话号码是多少,但我不希望我的数据库依赖于今天的最大值。只需使用类似的东西varchar(255),这在很长一段时间内应该绰绰有余。

于 2014-11-06T12:59:31.023 回答