4

是否有适合所有号码的电话号码格式?(比区号 3 个数字和其余 7 个数字更灵活的东西)

4

4 回答 4

10

这被标记为数据建模......所以我将解决这个问题。

电话号码,无论国家/地区,都应始终存储为不带格式 ( eg. "9083429876") 的字符串。

我看到人们试图将这些存储为带格式的字符串......这通常会导致灾难。在某个地方,有人会希望这些数字的格式不同。然后你不仅要为它们编写一个格式化函数,还要为它们编写一个非格式化函数。约萨。

我还看到有人试图将这些存储为 INT64(或 BIGINT)。嗯,很好,但为什么呢?没有人会显示未格式化的电话号码。要格式化,您必须将其转换为字符串。有些人试图争辩说它是出于分类目的,但这也行不通。对电话号码进行排序从来都不是有用的操作。根据区号过滤数字很有用 - 但按数字排序顺序返回所有数字?从来没有用。

我看到的第三个不好的做法是人们将数字的每个组成部分存储在单独的字段中。再次,不好。当你开始在那里戳国际号码时,这些字段变得毫无意义。举个例子:你认为塞内加尔使用区号吗?

因此,作为分手的想法,我留给您:由于每个国家/地区都有自己的一组数字(实际上是符号)-应该考虑并注意如何格式化它们以进行显示。

于 2009-05-20T19:15:20.127 回答
5

http://en.wikipedia.org/wiki/E.164

http://www.kropla.com/dialcode.htm

编辑:应该在我实际提交之前检查我粘贴的内容。

于 2009-05-20T18:53:58.533 回答
2

所有电话号码的格式为:

  • 国家代码(1-3 位数)
  • 其余的部分

电话号码的位数应为 15 或更少。

另见维基百科

于 2009-05-20T18:56:09.837 回答
0

始终将数字与国家/地区代码一起存储,以便在显示时能够明确并为读者正确格式化。

于 2011-09-27T11:21:18.860 回答