繁体   English   中英

为什么不将电话号码存储为5列:国家代码,区号,前缀,电话号码和分机号?

[英]Why not store a phone number as 5 columns: country code, area code, prefix, line number and extension?

我正在使用最初以破折号(123-456-7890)作为varchar2(12)字节存储在oracle数据库中的数据。 最初没有完成验证,人们存储了各种不良数据。 将来,我认为将电话号码的每个部分存储在单独的列中可能是一个好主意。 这对性能不利吗?

  • HOME_PHONE_CON编号(1)
  • HOME_PHONE_AREA号码(3)
  • HOME_PHONE_PREF号码(3)
  • HOME_PHONE_LINE号码(4)
  • HOME_PHONE_EXT号码(4)

===您的桌子===

如果将数据存储在5个单独的列中,那么当用户输入123-456-7890时,它将像这样

HOME_PHONE_CON | HOME_PHONE_AREA | HOME_PHONE_PREF | HOME_PHONE_LINE | HOME_PHONE_EXT
null | 123 | 456 | 7890 | null

(我不在美国,因此对格式错误表示歉意)

那么某人必须使用该号码搜索客户/用户,他们将输入“ 123-456-7890”或“ 1234567890”

你不得不

  1. 将输入分为5部分
  2. 查询多个条件,例如- 其中HOME_PHONE_CON喜欢('%part1%')和全部5个部分...
  3. 您将要索引5列

简而言之-为12个长度的文本列编制索引要快得多 (以防您无法做任何事情来验证用户输入)

只需将破折号替换为replace()命令就可以了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM