12

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

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

4

7 回答 7

23

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

于 2011-01-17T18:47:15.297 回答
7

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

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

于 2010-05-07T04:29:57.107 回答
5

电话号码也可以包含其他符号以提高可读性......电话号码的正则表达式看起来像[0-9+-()*#]+. 因此,您需要为电话号码使用文本字段,并进行一些验证。

于 2010-05-07T04:30:35.340 回答
3

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

于 2010-05-07T04:28:44.130 回答
3

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

于 2010-05-07T04:29:12.480 回答
1

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

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

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

于 2010-05-07T04:31:10.013 回答
-1

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

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

}

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

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

于 2013-12-26T16:19:54.763 回答