2011-06-08 31 views
0

我要存储isdCodes这是格式0091001009751009665等在数据库中,初始将基本上从零开始。我试图使用int作为数据类型与无符号属性,但它似乎并没有工作。哪种数据类型适合存储这种类型的值?用于存储从零开始的整数的MySQL数据类型?

+0

您可以使用int,但其输出在格式化00 {INT} ... – 2011-06-08 13:50:05

+0

@ Good.Dima不工作,因为IDD前缀是在大多数情况下,'00',但并非总是如此。它在大多数情况下以'0'开始,但并非总是如此。 – 2011-06-08 14:03:26

回答

3

不工作,因为IDD前缀是在大多数情况下00但并非总是如此。它在大多数情况下始于0,但并不总是如此。

由于前导零的数量关系,(即0091091),我会去在这种情况下varchar

如果你真的想使用一些数字类型,我想你可以在数字前加上一个1来保持零,但这会有点破解。

+0

不会,但是没关系,因为我只会存储整数? – 2011-06-08 13:51:43

+0

使用varchar数字?除非您存储千兆字节的这些数字,否则我不会看到它的主要问题。如果前导零的数量实际上很重要,我不认为数字类型是合适的。 – aioobe 2011-06-08 13:53:22

+0

不需要使用varchar和concatenation ...如果使用zerofilled值,db仅在输出信息时关注前导零。一个'SELECT * FROM table WHERE value = 1'将选择值为1的行,不管它有多少前导零。 – Nikoloff 2011-06-08 14:08:37

-1

您可以使用ZEROFILL,即:

CREATE TABLE test (value int zerofill); 

INSERT INTO test values(1), (20), (515); 
+0

使用零填充的问题是它会填满所有的零,例如,如果我decalred int(11),那么它将填写值与00000000001而不是只是'001' – 2011-06-08 13:54:50

+0

您可以更改字段的精度,但我不知道这是否会有所帮助。你将存储什么价值?不同的数字,全部以'00'开头?这对我来说没有什么意义,但是因为你对精准度给予的不满意,我不确定你想要完成什么...... – Nikoloff 2011-06-08 13:57:38

+0

@Ibrahim,更新了我的选择'1'的答案 - > '001'和'1000' - >'001000'。 – aioobe 2011-06-08 14:04:02

0

我会用一些VARCHAR对于自ISD代码不是你想“与计算”的东西,是一个数字序列,而比整数本身。领先的000事情表明非常好。

编辑 刚才看到存在像8~10这样的IDD前缀。所以没有办法使用类似数字的数据类型。如果你想能够存储任何ISD代码,你必须使用类似varchar或类似的东西。

相关问题