【发布时间】:2010-04-26 07:35:55
【问题描述】:
我有一个 MySQL 数据库,我想在其中存储电话号码等。
字段类型为 INT(10)
当我尝试插入以 0 开头的数字时,例如 0504042858,它会像 504042858 一样存储。这只发生在带有前导零的电话号码上。当数字以任何其他数字开头时,它被正确存储。
我做错了什么?
【问题讨论】:
标签: mysql
我有一个 MySQL 数据库,我想在其中存储电话号码等。
字段类型为 INT(10)
当我尝试插入以 0 开头的数字时,例如 0504042858,它会像 504042858 一样存储。这只发生在带有前导零的电话号码上。当数字以任何其他数字开头时,它被正确存储。
我做错了什么?
【问题讨论】:
标签: mysql
您可能应该将电话号码存储为varchar。电话号码只是偶然的数字。
您可能也有兴趣查看以下 Stack Overflow 帖子:
【讨论】:
varchar 实际上是一种好习惯。
您可以使用属性值 UNSIGNED_ZEROFILL 指定长度 INT(11)。它将填充所有 11 位数字,如果任何数字长度小于 11,它将在值之前添加零。 这可能会解决您的问题。
【讨论】:
它正在删除前导零,因为在数学上它们是相同的,并且删除前导零是一种快速的存储优化。此外,它还使数字更易于阅读,想象一下在数百个数字的列中用几个前导零填充的数字。
我同意 Daniel 将您的列更改为 varchar。
【讨论】: