当前位置:  开发笔记 > 前端 > 正文

在SQL Server 2005中应该使用什么数据类型来存储电话号码?

如何解决《在SQLServer2005中应该使用什么数据类型来存储电话号码?》经验,为你挑选了2个好方法。

我需要将电话号码存储在一张桌子里.请建议我应该使用哪种数据类型? 等待.请在回复之前阅读..

由于销售代表可以使用此字段进行搜索(包括野生字符搜索),因此需要对此字段进行大量索引.

截至目前,我们期望电话号码有多种格式(来自XML文件).我是否必须编写解析器才能转换为统一格式?可能有数百万个数据(有重复数据),每次有些源数据通过时我都不想占用服务器资源(在预处理过多等活动中).

欢迎任何建议..

更新:我无法控制源数据.只是xml文件的结构是标准的.想要将xml解析保持在最低限度.一旦它在数据库中,检索应该很快.这里有一个疯狂的建议是它甚至应该使用Ajax AutoComplete功能(因此Sales Reps可以立即看到匹配的功能).我的天啊!!



1> Kearns..:

这包括:

国际号码?

扩展?

除了实际数字之外的其他信息(比如"问鲍比")?

如果所有这些都不是,我会使用10个char字段并删除所有非数字数据.如果第一个是yes而另外两个是no,我将使用两个varchar(50)字段,一个用于原始输入,另一个用于所有非数字数据条带化并用于索引.如果2或3是,我想我会做两个字段和某种疯狂的解析器来确定什么是扩展或其他数据并适当地处理它.当然,您可以通过对索引执行某些操作来避免第二列,在创建索引时它会删除多余的字符,但我只是制作第二列,并且可能使用触发器来删除字符.

更新:为解决AJAX问题,它可能没有您想象的那么糟糕.如果这是实际上对表进行任何操作的主要方式,则按照我的说法仅存储辅助列中的数字,然后使该列的索引成为聚簇索引.


挑选,但10个字符区域不会涵盖大多数英国手机号码和许多英国陆地线路号码.即使在美国,也允许超过10个允许未来扩展电话号码.

2> Brad Osterlo..:

我们使用varchar(15)并且肯定会对该字段进行索引.

原因是国际标准最多可支持15位数字

维基百科 - 电话号码格式

如果您确实支持国际号码,我建议单独存储世界区域代码或国家/地区代码,以便更好地过滤查询,这样您就不会发现自己正在解析和检查电话号码字段的长度以限制返回到美国的电话号码例


@drrcknlsn原因是领先的零 - 一些(大多数在某些国家)以零开头
@drrcknlsn我知道这个评论是2岁,但是如果有人遇到你的评论:通常经验法则是整数数据类型应该用来存储有意义的数学数据进行数学运算,其余的是字符串.例如,添加两个电话号码或乘以SIN/SSN号码没有意义,因此它们应存储为字符串.
我可能忽略了一些显而易见的事情,但使用字符数据类型存储数字数据有什么好处?如果您存储的不仅仅是数字数据(例如分隔符),那么存储格式化的15位数字不需要超过15个字符吗?
推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有