在数据库字段中存储电话号码的好的数据结构是什么?我正在寻找一种足够灵活的方法来处理国际号码,并且允许高效地查询号码的各个部分。
编辑:为了澄清这里的用例:我目前将号码存储在一个单独的varchar字段中,我将它们保留为客户输入的内容。然后,当代码需要该号码时,我对其进行规范化。问题是,如果我想查询几百万行以查找匹配的电话号码,则涉及到一个函数,例如
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
这种方法非常低效。而且,当只有一个varchar字段时,查询像区号这样的内容变得非常棘手。
[编辑]
这里有很多人提出了很好的建议,谢谢!作为更新,这是我现在正在做的:我仍然将数字存储为它们输入的样子,在一个varchar字段中,但是不再在查询时规范化数据,我有一个触发器,在插入或更新记录时完成所有工作。因此,对于任何需要查询的部分,我有整数或大整数,这些字段已经索引以使查询运行更快。