【问题标题】:MySQL 5.1.41 leading zero is deletedMySQL 5.1.41 前导零被删除
【发布时间】:2010-04-26 07:35:55
【问题描述】:

我有一个 MySQL 数据库,我想在其中存储电话号码等。

字段类型为 INT(10)

当我尝试插入以 0 开头的数字时,例如 0504042858,它会像 504042858 一样存储。这只发生在带有前导零的电话号码上。当数字以任何其他数字开头时,它被正确存储。

我做错了什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可能应该将电话号码存储为varchar。电话号码只是偶然的数字。

    您可能也有兴趣查看以下 Stack Overflow 帖子:

    【讨论】:

    • 您好,感谢您的快速回复。我想知道将数字存储为字符串是否不是坏习惯。还有,为什么 MySQL 会在我不问的情况下删除我的 0?
    • 不是删除它。 0504 在数字方面是 504...另外,我想说将它们存储为 varchar 实际上是一种好习惯。
    • 因为整数没有前导零,01、0001 和 1 仍然是同一个数字,1。
    • 谢谢大家的回答,我将字段类型更改为 varchar(10) 但我的零仍然被删除。编辑:清空缓存,现在突然可以工作了,谢谢大家!
    【解决方案2】:

    您可以使用属性值 UNSIGNED_ZEROFILL 指定长度 INT(11)。它将填充所有 11 位数字,如果任何数字长度小于 11,它将在值之前添加零。 这可能会解决您的问题。

    【讨论】:

      【解决方案3】:

      它正在删除前导零,因为在数学上它们是相同的,并且删除前导零是一种快速的存储优化。此外,它还使数字更易于阅读,想象一下在数百个数字的列中用几个前导零填充的数字。

      我同意 Daniel 将您的列更改为 varchar。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        • 2018-10-14
        • 1970-01-01
        • 2010-09-26
        • 2021-10-02
        • 2018-08-13
        相关资源
        最近更新 更多