【问题标题】:Allow number to start with ZERO when stored in mysql integer field存储在 mysql 整数字段中时允许数字以零开头
【发布时间】:2011-02-16 16:33:12
【问题描述】:

我需要存储以 0 开头的电话号码,但每当我尝试将其存储在 MySql 表中时,都会删除起始零,因为实际上没有数字以零开头。

如何解决这个问题?我需要将字段类型从 Integer 更改为另一种类型吗?

【问题讨论】:

    标签: mysql integer phone-number


    【解决方案1】:

    您还可以使用函数将所需的数字用前导零包装起来。如果“字符串”小于 2 位,我使用此函数添加前导零(它用于将前导零添加到小时和分钟)

    function leadZero($num) {
        if (strlen($num) < 2) {
            return "0" . $num;
        } else {
            return $num;
        }
    
    }
    

    如果您说要输出为 02 的数字 2,您可以执行 leadZero(2);

    如果数字长度小于 2 位,这只会添加一个零!例如铅零(14);将返回 14

    【讨论】:

      【解决方案2】:

      将数据类型更改为 unsigned-zerofill 无论您使用什么,float、int、decimal(6,2)... 仅将字段编辑为 unsigned-zerofill

      【讨论】:

      • “unsigned-zerofill”选项可以在“属性”栏下选择。
      【解决方案3】:

      是的 - 数字字段只存储数值,而不是那些的格式(带有前导零的 paddin 是)。你应该

      1. 将字段类型从整数更改为 varchar 或 char(如果位数始终相同)。

      2. 将数字存储为整数,但根据需要在表示层中添加 0。

      【讨论】:

        【解决方案4】:

        为了便于阅读,电话号码也可以包含其他符号...电话号码的正则表达式类似于[0-9+-()*#]+。因此,您需要为电话号码使用文本字段,并进行一些验证。

        【讨论】:

        • 需要考虑的其他几种格式:555​​/555-1212、555.555.1212、555-555-1212 x123
        • 因此'类似'......验证电话号码很棘手。我猜[0-9 +-()*#x.,/]+ 接近了。
        【解决方案5】:

        电话号码不是真正的数字,因为它们不是序数。它们只是字符——它们是数字的事实是偶然的。

        将它们存储在 varchar 中并继续:D

        【讨论】:

          【解决方案6】:

          电话号码不是整数,您在尝试将它们存储为整数时只会遇到问题,而是将它们存储为字符串。

          【讨论】:

            【解决方案7】:

            您可以使用数据类型作为 varchar 来解决这个问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-01-31
              • 1970-01-01
              相关资源
              最近更新 更多