我需要将电话号码存储在一张桌子里.请建议我应该使用哪种数据类型? 等待.请在回复之前阅读..
由于销售代表可以使用此字段进行搜索(包括野生字符搜索),因此需要对此字段进行大量索引.
截至目前,我们期望电话号码有多种格式(来自XML文件).我是否必须编写解析器才能转换为统一格式?可能有数百万个数据(有重复数据),每次有些源数据通过时我都不想占用服务器资源(在预处理过多等活动中).
欢迎任何建议..
更新:我无法控制源数据.只是xml文件的结构是标准的.想要将xml解析保持在最低限度.一旦它在数据库中,检索应该很快.这里有一个疯狂的建议是它甚至应该使用Ajax AutoComplete功能(因此Sales Reps可以立即看到匹配的功能).我的天啊!!
这包括:
国际号码?
扩展?
除了实际数字之外的其他信息(比如"问鲍比")?
如果所有这些都不是,我会使用10个char字段并删除所有非数字数据.如果第一个是yes而另外两个是no,我将使用两个varchar(50)字段,一个用于原始输入,另一个用于所有非数字数据条带化并用于索引.如果2或3是,我想我会做两个字段和某种疯狂的解析器来确定什么是扩展或其他数据并适当地处理它.当然,您可以通过对索引执行某些操作来避免第二列,在创建索引时它会删除多余的字符,但我只是制作第二列,并且可能使用触发器来删除字符.
更新:为解决AJAX问题,它可能没有您想象的那么糟糕.如果这是实际上对表进行任何操作的主要方式,则按照我的说法仅存储辅助列中的数字,然后使该列的索引成为聚簇索引.
我们使用varchar(15)并且肯定会对该字段进行索引.
原因是国际标准最多可支持15位数字
维基百科 - 电话号码格式
如果您确实支持国际号码,我建议单独存储世界区域代码或国家/地区代码,以便更好地过滤查询,这样您就不会发现自己正在解析和检查电话号码字段的长度以限制返回到美国的电话号码例