【发布时间】:2011-09-06 01:28:50
【问题描述】:
我应该使用哪种数据类型来存储 10 位数的手机号码(例如:9932234242)。我应该选择 varchar(10) 还是选择大的 - “bigint”。
如果数字是类型- '0021-23141231' ,那么使用哪种数据类型?
【问题讨论】:
标签: sql-server-2005 sql-server-2008 sql-server-express sqldatatypes
我应该使用哪种数据类型来存储 10 位数的手机号码(例如:9932234242)。我应该选择 varchar(10) 还是选择大的 - “bigint”。
如果数字是类型- '0021-23141231' ,那么使用哪种数据类型?
【问题讨论】:
标签: sql-server-2005 sql-server-2008 sql-server-express sqldatatypes
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 或空格。为了进行比较,我们可以从表达式的两边删除所有特殊字符。
【讨论】: