数据库设计:电话号码长度

SOASPX 29987 0

1.StackOverflow的建议

当我们设计电话号码在数据库中如何存储的时候,如果只是存储国内的电话号码,这个长度只需要11即可,考虑未来可能会变长或者加上横杠井号之类的内容,可以设置成varchar(15)。当然座机也可以包含在内。但是如果需要做到国际化,包含各个国家的电话号码,还要包含区号,就比较复杂了,需要慎重考虑。

根据What's the longest possible worldwide phone number I should consider in SQL varchar(length) for phone中的讨论,我们基本可以确定,如果存储除核心号码以外的其他内容,还是需要稳妥一点的。应该参照第一个答案:

数据库设计:电话号码长度-第1张图片-.net教程网

2.关于核心号码长度

另外,为什么核心号码长度不会超过15,这个是参照一个规范的,这个规范叫:ITU-T recommendation E.164,这个名字有点怪,它还有一个名字叫:《The international public telecommunication numbering plan》。当然,这个规范是一种国际上的推荐,如果有一个地区就是不按照这个推荐的方式你也没有办法。 在这篇文档中,有一个表格总结了号码长度,如下:

数据库设计:电话号码长度-第2张图片-.net教程网

3.总结

综上,

  • 如果不考虑很久远的未来的情况。一般来说,varchar(20),就够用(包括存储一些特殊字符:+-#)。

  • 如果浪一点,可以使用varchar(15),只存储核心号码。

  • 若是您考虑到尽可能多的情况,甚至于一些不符合规范的情况,我们可以使用稳妥的方案,即varchar(30)

  • 如您非常悲观,则选用varchar(50)吧。

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~