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