为存储来自不同国家/地区的手机的应用存储电话号码的最佳方法是什么。
我正在考虑将国家/地区代码存储为int并将电话号码存储为字符串(并且在应用程序级别只允许该字符串中的数字)。
我正在使用sql server
答案 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等。