我将使用哪种数据类型来存储10位数的移动电话号码(例如:9932234242)。我要去varchar(10)还是大的 - “bigint”。
如果数字是'0021-23141231',那么使用哪种数据类型?
答案 0 :(得分:12)
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中删除所有特殊字符。