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