6

用于存储 MSISDN(电话号码)的最佳数据类型是什么。

需要能够存储世界上任何电话号码。

有谁知道最大可能的 MSISDN 长度,包括国际拨号代码?

例如,南非的电话号码是 +27xxxxxxxxx,这会产生 11 位数字,不包括 +

+ 不必存储。

提前致谢

4

2 回答 2

12

我会使用 BIGINT。请不惜一切代价避免使用 varchar。使用 varchar 或 char 是一个非常糟糕的主意。

原因。Varchar/char 占用更多空间,查找和交叉引用更慢,索引也更大。

在设计表格时,尽量让它们保持设定的行长,事情会运行得更快。如果您必须有一些文本字段,通常最好使用 char 而不是 varchar,因为 varchar 的开销成本很高。

我在电信行业工作了 12 年,现在设计/优化 VoIP/SMS 平台。当我来修复系统时,头号杀手是无处不在的 varchars。

只是我的 0.02 价值。

于 2012-07-11T12:20:38.733 回答
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)。

于 2012-07-10T16:33:31.930 回答