电话号码分机是否应以Zero开头?

时间:2017-07-24 10:00:45

标签: sql sql-server types

我在表格中创建了一个扩展列,其类型为整数。但如果以数字开头,它会忽略数字的 0 部分。如果情况需要,我可以将数据类型更改为 Varchar 。但在进行此更改之前,我想确认扩展程序是否可以在(特别是在美国和加拿大)的任何组织中以 0 开头。

例如 假设我的表中有一个扩展列。所以我所做的就是 int ext .....
我应该将我的数据类型更改为varchar,还是应该假设Extension永远不会以 0 开头。我处于两难境地,请给我一些建议。

2 个答案:

答案 0 :(得分:1)

我建议切换到varchar有几个原因:

1)电话号码本质上是一串任意字符,它并不是一个可以求和或平均的数字等。设置为varchar将意味着任何工具更进一步(例如SSAS,数据即工具)不会尝试从字段隐式创建数字度量。

2)你永远不能假设人们将把什么放入你的数据源。如果某人已经输入一个然后再处理它,而不是你的应用程序发出错误,那么能够接受0更好。

3)你总是可以检查你是否在一个字符串的开头有一个0,然后在需要时删除它,例如使用charindex和substring / right等。

4)您可以根据需要在电话号码中允许“+”和其他字符

答案 1 :(得分:1)

处理电话号码比您预期的要困难得多。阅读this question上的答案和评论,并了解Google phone number library是否有多难。

扩展通常由内部PBX处理,例如Asterisk;这些系统可以自由地实现他们喜欢的任何扩展号码格式(只要它们由普通电话系统支持)。这包括从前导零开始。

我建议你不要将这些数据存储为整数 - 正如@ https://stackoverflow.com/users/267/lasse-v-karlsen所暗示的那样,它不是数学意义上的数字,而是一系列恰好包含数字的符号。