这可能是一个愚蠢的问题。我需要在表中有一个Id字段。此Id不是密钥(主要或其他)。要求说用户可以从UI输入此字段中的10位数字。到目前为止,此Id与系统中的任何其他对象无关。你认为如果可以在这个领域使用nvarchar或bigint。 bigint是否会成为此目的的开销?
答案 0 :(得分:6)
如果您将使用此专栏进行任何数学工作,那么显然首选整数类型。或者,如果这是一个纯粹的,不透明的标识符,那么char或varchar列似乎更有意义。如果前导零可能很重要,那么显然整数类型将不起作用,例如如果存储英国电话号码01234 567890,您需要在char列中。
编辑和奖励积分,如果它是一个始终为十位数的ID:
CREATE TABLE T (
/* Other columns */
Id char(10),
constraint CK_ID_Valid CHECK (LEN(ID)=10 and not ID like '%[^0-9]%')
)
答案 1 :(得分:0)
企业可能会要求您开始在此密钥中存储字母数字数据。我建议你坚持使用nvarchar或varchar。即使它仍然是数字而不是在某种计算中的任何地方使用,将它作为varchar是完全有效的。
答案 2 :(得分:0)
您可以使用NUMERIC(10,0)类型 或者如果你没有任何数学运算,你可以使用nvarchar类型。