您好我的数据库中有一列设置为Int。
但是我的数据总是从0开始,所以每当我添加一条新记录时,它都会删除0并且我不希望它这样做,因为第一个字符必须在某个时刻为1。
我如何克服这个问题?
使用VARCHAR的最佳方法是使用PHP进行验证吗?
更新
如果我输入02118272,它将以2118272保存到数据库中。
答案 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。