什么是最长的可能的全球电话号码,我应该考虑在SQL varchar(长度)电话。

注意事项:

+表示国家代码 ()为区号 x + 6个数字用于扩展扩展(因此将其设置为8 {space}) 组与组之间的空格(即美式手机+x xxx xxx xxxx = 3个空格) 这就是我需要你们帮助的地方,我希望它是世界性的

考虑到我现在的特殊情况,我不需要卡片等,号码以国家代码开始,以分机结束,没有传真/电话等评论,也不需要电话卡的东西。


当前回答

数字范围为所有国家4 - 13 https://en.wikipedia.org/wiki/List_of_mobile_telephone_prefixes_by_country

其他回答

考虑到varchar(30)和varchar(100)之间没有开销差异,如果你在每个varchar中只存储20个字符,那么谨慎起见,还是设为50吧。

更糟糕的是,我用电话卡打国际电话,所以它在美国的本地号码+帐号#(6位数字)+ pin(4位数字)+“暂停”+你上面描述的。

我怀疑可能还有其他情况

至于“电话号码”,你应该真正考虑“用户号码”和“拨号号码”之间的区别,以及它们可能的格式选项。

用户号码一般在国家号码规划中定义。这个问题本身通过提到“地区代码”显示了与国家观点的关系,而许多国家都没有。国际电联汇集了世界编号计划的概述,发布了E.164建议,其中发现国家号码最多有12位数字。国际直拨电话(DDD)由1到3位数的国家代码定义,他们增加了多达15位数……没有进行格式化。

拨号号码是另一回事,因为有一些网络元素可以解释电话号码中的扩展值。您可能会想到一个应答机和一个设置呼叫转移参数的号码代码。由于它可能包含另一个订阅者号码,因此它必须明显大于其基值。RFC 4715为“子寻址”预留了20个bcd编码字节。

如果你转向技术限制,那么它会得到更多,因为用户号码在3GPP标准(如GSM)和ISDN标准(如DSS1)中有10 bcd编码字节的技术限制。它们有一个单独的TON/NPI字节用于前缀(数字/数字计划指示器的类型),E.164建议用“+”来写,但许多数字计划将其定义为最多4个号码。

因此,如果你想证明未来(许多软件系统出人意料地运行了几十年),你需要考虑用户号码为24位,拨号号码为64位作为限制……没有进行格式化。添加格式可能会为每个数字添加一个额外的字符。因此,作为最后一个想法,以任何方式限制数据库中的电话号码并不是一个好主意,而是把更短的限制留给UX设计师。

在GSM规范3GPP TS 11.11中,MSISDN EF (6F40)中预留了10个字节用于“拨号号码”。由于这是一个电话号码的GSM表示,并且它的使用是交换的,(总是有括号的可能性)22个字符的数据应该足够了。

在我的经验中,只有一个开/闭括号的例子,这就是我对上面的推理。

数字范围为所有国家4 - 13 https://en.wikipedia.org/wiki/List_of_mobile_telephone_prefixes_by_country