MySQL Int删除0

时间:2009-08-30 13:01:58

标签: php mysql integer

您好我的数据库中有一列设置为Int。

但是我的数据总是从0开始,所以每当我添加一条新记录时,它都会删除0并且我不希望它这样做,因为第一个字符必须在某个时刻为1。

我如何克服这个问题?

使用VARCHAR的最佳方法是使用PHP进行验证吗?

更新

如果我输入02118272,它将以2118272保存到数据库中。

3 个答案:

答案 0 :(得分:6)

整数7与整数000000000000000000000000007相同。他们俩......你知道......七。当存储在数据库中时,它实际上存储为类似000000000000000000000000007的东西,但大多数MySQL客户端都不会费心去显示所有这些零。

如果在您的应用程序中使用一定数量的数字显示这些数字很重要,您可以使用str_pad()函数添加任意数量的前导零:

str_pad($your_string, 10, '0', STR_PAD_LEFT);

此处,10是您希望字符串的长度,'0'是为了使其成为长度而添加的字符,而STR_PAD_LEFT表示要添加字符串左侧的字符。

另一方面,如果数字'007'与数字'7'根本不同,那么您必须使用VARCHAR()字段来存储它。那些不再是整数;它们是具有非常不同含义的字符串。

答案 1 :(得分:3)

您应该在数据库中存储的是数据。格式化数据是应用程序的责任,而不是数据库本身。

我会将它存储为一个整数,如果你需要带有前导零的7位小数,那么正确的位置是在将数据提取到你的应用程序之后。

答案 2 :(得分:1)

我认为您应该为该字段使用varchar类型。如果你想在php中将变量转换为整数,你可以这样做:

$var=preg_replace("/[^\d]/","",$var);

用这个删除所有不是数字的字符,然后你可以把这个值放到数据库中,保留最初的0。