【发布时间】:2015-11-24 09:25:55
【问题描述】:
我应该使用哪种数据类型来处理 9 位帐号,为什么?
varchar(9) 或 int 或 decimal 或其他?
我是从数据库的角度说的——DBMS 就是 Informix。
【问题讨论】:
-
帐号是否总是正好是 9 位数字,还是需要同时存储
0035和000000035? -
@LasseV.Karlsen:总是 9 位数字,我进行了验证以强制用户仅输入 9 位数字
-
如果长度是固定的,我会考虑
char(9)而不是一些数字类型(主要是因为数字不代表你可以做任何有意义的算术的数字 - 这只是个人喜好不过)。 -
固定字符,使用插入/更新触发器来验证格式是否始终正确!
-
根据documentation,
INTEGER数据类型支持 +/- 2^31 的范围,正如@JonSkeet 所说,2,147,483,647,所以是的,它支持 9 位数字。请注意,您必须用零填充数字,因为如果您存储000000035,然后读回它,它将只是35,因为在数字上它们是相同的值。然而,在这种情况下,我认为也许你应该选择CHAR(9),因为这不是一个真正的数字,你不会用它做任何算术运算,它更像是一个独特的代码。