mobileno的数据类型.decimal与varchar



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

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

谢谢。

这个问题有征求意见的风险。然而,我认为它有一个"正确"或至少"更好"的答案。

存储数字时应使用数字类型。数字具有有序性和算术性。许多东西被存储为不具有这些属性的数字——想想信用卡号码、邮政编码和FIP代码。电话号码也属于这一类。

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

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

最新更新