用于存储手机号码的数据类型

时间:2011-06-01 07:28:36

标签: sql-server-2005 sql-server-2008 sql-server-express sqldatatypes

我将使用哪种数据类型来存储10位数的移动电话号码(例如:9932234242)。我要去varchar(10)还是大的 - “bigint”。

如果数字是'0021-23141231',那么使用哪种数据类型?

4 个答案:

答案 0 :(得分:12)

  • varchar / char足够长,可以满足所有预期(例如,英国的数字是11长)
  • 检查约束以仅允许数字(表达式= NOT LIKE '%[^0-9]%'
  • 每个区域设置客户端中的
  • 格式(英国= 07123 456 789,瑞士= 071 234 56 78

答案 1 :(得分:8)

正如其他人已经回答的那样,对于恰好由数字组成的数据使用varchar,但数学运算没有意义。

此外,在您的示例中,您是否考虑过将002123141231存储到bigint列后会发生什么?检索后,它将是2123141231,即数字列无法存储前导0个数字...

答案 2 :(得分:3)

使用带有检查约束的varchar以确保只允许数字。

这样的事情:

create table MyTable
(
    PhoneNumber varchar(10)
        constraint CK_MyTable_PhoneNumber check (PhoneNumber like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
)

如果总长度相同,则可能需要使用char

答案 3 :(得分:-1)

varchar(50)适用于手机号码数据类型。因为它有时可能包含国家/地区代码,例如+91或空格。为了进行比较,我们可以在expresion中删除所有特殊字符。