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

| 我应该使用哪种数据类型来存储10位数字的手机号码(例如:9932234242)。我要去varchar(10)还是大的“ bigint”呢? 如果数字的类型为\'0021-23141231 \',那么使用哪种数据类型?     
已邀请:
         varchar / char的长度足以满足所有预期的要求(例如,英国数字为11个长) 检查约束以仅允许数字(表达式=
NOT LIKE \'%[^0-9]%\'
) 客户在每个区域设置的格式(英国=
07123 456 789
,瑞士=
071 234 56 78
)     
        就像其他人回答的那样,对那些恰好由数字组成的数据使用varchar,但是对于数学运算没有意义的数据。 另外,在您的示例编号中,您是否考虑过将“ 3”存储到“ 4”列中会发生什么情况?检索后将是
2123141231
,即数字列无法存储前
0
位数字...     
        将“ 7”与校验约束一起使用,以确保仅允许数字。 像这样:
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
。     
        varchar(50)适用于手机号码数据类型。因为它有时可能包含国家代码,例如+91或空格。为了进行比较,我们可以从表达式的两侧删除所有特殊字符。     

要回复问题请先登录注册