存储电话号码

时间:2011-01-12 22:50:15

标签: asp.net sql-server

为存储来自不同国家/地区的手机的应用存储电话号码的最佳方法是什么。

我正在考虑将国家/地区代码存储为int并将电话号码存储为字符串(并且在应用程序级别只允许该字符串中的数字)。

我正在使用sql server

4 个答案:

答案 0 :(得分:3)

电话号码是以编程方式使用还是只是为了在屏幕上显示或打印它们?如果是后者,我只需使用nvarchar。原因是来自不同国家的人们有不同的打印电话号码的习惯。

例如美国的数字看起来像这样:

XXX-XXXX-XXXX

虽然德国人经常写

(x)的XXX / XXXXXXX

答案 1 :(得分:3)

电话号码比你想象的要复杂得多。例如,Linode列出了这个:

Phone: (609) 593-7103
Fax: (615) 250-4945
SIP: 0@office.linode.com
ISN: 0*862 (FWD, dial **012 first)

所以你如何存储它们将取决于它们的用途。我会尽可能地保持简单:如果你只是存储“联系信息”,我会保留一个自由格式nvarchar,并让阅读它的用户决定如何解释它。在2020年,人们将拥有如下电话号码:

1234567890@pstngw.yourisp.net
bart@simpson.com
1@whitehouse.gov

另一方面,如果您对电话号码有特定目标,请确保数据与该目标一致。假设您必须控制拨号系统以进行自动拨出。然后,您应该查阅手册,看看它接受的有效电话号码。

一般情况下,在确定会产生一些好处之前,请不要增加复杂性。

答案 2 :(得分:2)

我会用

 varchar

并选择合适的长度(例如:32/64 / etc ..)

不是数字类型,因为你不打算用它做任何数学运算。

答案 3 :(得分:1)

根据应用的设置方式,您可以拥有一个数字电话号码字段,并根据国家/地区跟踪号码类型 - 这样您就可以控制屏幕以进行显示。

如果您将其存储为字符串,您会发现每个人都有不同的电话号码方式。即使在北美,你也会找到(xxx)xxx-xxxx,xxx-xxx-xxxx,xxx.xxx.xxxx等。