我应该使用哪种数据类型来存储 10 位数的手机号码(例如:9932234242)。我应该选择 varchar(10) 还是选择大的 - “bigint”。
如果数字是类型 - '0021-23141231' ,那么使用哪种数据类型?
我应该使用哪种数据类型来存储 10 位数的手机号码(例如:9932234242)。我应该选择 varchar(10) 还是选择大的 - “bigint”。
如果数字是类型 - '0021-23141231' ,那么使用哪种数据类型?
NOT LIKE '%[^0-9]%'
)07123 456 789
,瑞士 = 071 234 56 78
)正如其他人所回答的那样,对于恰好由数字组成的数据使用 varchar ,但数学运算对其没有意义。
此外,在您的示例编号中,您是否考虑过如果存储002123141231
到bigint
列中会发生什么?检索后,它将是2123141231
,即数字列无法存储前导0
数字...
与检查约束一起使用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
。
varchar(50) 适用于手机号码数据类型。因为它有时可能包含国家代码,例如 +91 或空格。为了比较的目的,我们可以从表达式的两边删除所有特殊字符。