当存储在mysql整数字段中时,允许数字以ZERO开头

时间:2010-05-07 04:25:37

标签: mysql integer phone-number

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

如何解决这个问题?我是否需要将字段类型从Integer更改为其他类型?

7 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:6)

电话号码不是真正的数字,因为它们不是序数。他们只是人物 - 事实上他们是数字是偶然的。

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

答案 2 :(得分:5)

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

答案 3 :(得分:3)

您可以将数据类型用作varchar来解决此问题。

答案 4 :(得分:3)

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

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:-1)

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

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

}

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

如果数字小于2位数,这只会加零!例如leadZero(14);将返回14