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

注意事项:

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

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


当前回答

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

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

其他回答

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

我怀疑可能还有其他情况

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

Assuming you don't store things like the '+', '()', '-', spaces and what-have-yous (and why would you, they are presentational concerns which would vary based on local customs and the network distributions anyways), the ITU-T recommendation E.164 for the international telephone network (which most national networks are connected via) specifies that the entire number (including country code, but not including prefixes such as the international calling prefix necessary for dialling out, which varies from country to country, nor including suffixes, such as PBX extension numbers) be at most 15 characters.

呼叫前缀取决于调用方,而不是被调用方,因此(在许多情况下)不应该与电话号码存储在一起。如果数据库存储个人地址簿的数据(在这种情况下存储国际呼叫前缀是有意义的),那么您必须处理的最长国际前缀(根据维基百科)目前是芬兰的5位数。

至于后缀,一些pbx支持最多11位的扩展名(同样,根据维基百科)。由于PBX分机号是不同拨号计划的一部分(PBX与电话公司的交换机是分开的),所以分机号需要与电话号码区分开来,要么使用分隔符,要么将分机号存储在不同的列中。

在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