用于存储MSISDN(电话号码)的最佳数据类型是什么。
需要能够在世界上存储任何电话号码。
有谁知道可能的最大MSISDN长度,包括国际拨号代码?
例如,南非的电话号码为+ 27xxxxxxxxx,除了+
外,其中包含11位数字不必存储+。
提前致谢
答案 0 :(得分:10)
我会使用BIGINT。请不惜一切代价避免使用varchar。使用varchar或char是一个非常糟糕的主意。
原因。 Varchar / char占用更多空间,查找和交叉引用的速度较慢,索引也较大。
设计表时,尝试使用设置的行长保持它们,事情会更快地运行。如果你必须有一些文本字段,通常最好使用char而不是varchar,因为varchar的开销很高。
我在电信领域工作了12年,现在正在设计/优化VoIP / SMS平台。我来修复系统时的头号杀手是各种各样的变种。
只是我的0.02值。
答案 1 :(得分:3)
MSISDN限制为15位,不包括前缀。
GSM变体中的MSISDN构建为:
MSISDN = CC + NDC (or NPA ) + SN
CC = Country Code
NDC = National Destination Code
NPA = Number Planning Area
SN = Subscriber Number
理想情况下,您不必保存+。它只是代表一个退出。
最长的国际拨号代码仅在使用Thuraya(882 16)拨打电话时使用。您可以将其保存在其他位置。
如果您计划将国际拨号代码和MSISDN结合使用,则可以使用nvarchar(21)或varchar(21)。