我是SQL的新手,我需要在表格中输入手机号码,例如0425 198053。我可以输入数据,但是输入时如何显示?我使用过INT
,VARCHAR
和CHAR
,但是所有受这些限制的条目在显示时都会从电话号码中删除0。
我应该使用特定的约束吗?这是格式问题吗?
编辑后添加
这是我一直在使用的表
CREATE TABLE Department
(
dID INT PRIMARY KEY,
dName VARCHAR(20) NOT NULL,
Address VARCHAR(50) NOT NULL,
Phone VARCHAR(10) NOT NULL UNIQUE,
)
示例数据
dID dName Address Phone
--------------------------------------
1 Sales CBD 425198053
2 Accounts Bundoora 429198955
3 Admin CBD 428198758
4 Marketing Clayton 427198757
答案 0 :(得分:0)
我只是坚持使用VARCHAR(10)。它仍然提供了一种解决方案,我只是想知道如何使其显示为零。 还是谢谢。
答案 1 :(得分:-1)
此one写于2008年,但仍与之相关:
这包括:
- 国际号码?
- 扩展?
- 除了实际数字以外的其他信息(例如“问鲍比”)?
如果所有这些都不是,我将使用10个字符的字段并去除所有 非数字数据。如果第一个为是,其他两个为否,我会 使用两个varchar(50)字段,一个用于原始输入,另一个用于 条带化并用于索引的所有非数字数据。如果2或3是, 我想我会做两个领域和某种疯狂的解析器来确定 什么是扩展名或其他数据并进行适当处理。的 当然,您可以通过使用 索引,当创建 索引,但我只写第二列,可能要做剥离 带有触发器的字符。
更新:为了解决AJAX问题,它可能没有您想象的那么糟糕。 如果实际上这是对表格执行所有操作的主要方式, 如我所说,仅将数字存储在第二列中,然后进行 该列的索引是聚簇的。
意思是,长话短说,一种在sql中保存电话号码的最佳方法是 10个字符字段或一个 varchar(50)字段。
您还可以创建一个触发器(如果您愿意处理触发器),以便去除电话号码值中的所有多余字符。
考虑到触发器也可能在开始处理代码时变得混乱,但这是您的决定。