mysql zero fill_类型 - zerofill在MySQL中有什么好处?

类型 - zerofill在MySQL中有什么好处?

我只是想知道在MySQL中为INT数据定义INT的好处/用法是什么?

`id` INT UNSIGNED ZEROFILL NOT NULL

9个解决方案

216 votes

当您选择类型为ZEROFILL的列时,它会使用零填充字段的显示值,直到列定义中指定的显示宽度。 长度超过显示宽度的值不会被截断。 请注意,ZEROFILL的使用也意味着UNSIGNED。

使用ZEROFILL和显示宽度不会影响数据的存储方式。 它仅影响它的显示方式。

下面是一些演示ZEROFILL使用的示例SQL:

CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL);

INSERT INTO yourtable (x,y) VALUES

(1, 1),

(12, 12),

(123, 123),

(123456789, 123456789);

SELECT x, y FROM yourtable;

结果:

x y

00000001 1

00000012 12

00000123 123

123456789 123456789

Mark Byers answered 2019-05-24T21:45:43Z

117 votes

一个例子是为了理解ZEROFILL的使用可能有趣:

在德国,我们有5位数的邮政编码。 但是,这些代码可能以零开头,因此80337是munic的有效邮政编码,01067是柏林的邮政编码。

如您所见,任何德国公民都希望邮政编码显示为5位数代码,因此1067看起来很奇怪。

为了存储这些数据,您可以使用VARCHAR(5)或INT(5)ZEROFILL,而零填充整数有两个很大的优点:

硬盘上的存储空间少了很多

如果你插入1067,你仍然会得到01067

也许这个例子有助于理解ZEROFILL的使用。

Phil answered 2019-05-24T21:46:48Z

52 votes

对于喜欢方盒的受干扰的人来说,这是一个特色。

你插入

1

23

123

但是当你选择时,它会填充值

000001

000023

000123

Ilya Saunkin answered 2019-05-24T21:47:25Z

13 votes

如果您需要将此“整数”与其他内容(另一个数字或文本)连接起来,需要将其排序为“文本”,它有助于正确排序。

例如,

如果你需要使用整数字段数字(比方说5)连接为A-005或10/0005

Ken answered 2019-05-24T21:47:57Z

3 votes

我知道我迟到了,但我发现zerofill对TINYINT(1)的布尔表示有帮助。 Null并不总是意味着虚假,有时你不想要它。 通过对一个tinyint进行零填充,您可以有效地将这些值转换为INT,并消除应用程序在交互时可能产生的任何混淆。 然后,您的应用程序可以以与原始数据类型True = Not(0)类似的方式处理这些值

Marlin answered 2019-05-24T21:48:22Z

3 votes

mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);

Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);

Query OK, 3 rows affected (0.02 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM tin3;

+----+------------+

| id | val |

+----+------------+

| 1 | 0000000012 |

| 2 | 0000000007 |

| 4 | 0000000101 |

+----+------------+

3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;

+-------------+

| LENGTH(val) |

+-------------+

| 10 |

+-------------+

1 row in set (0.01 sec)

mysql> SELECT val+1 FROM tin3 WHERE id=2;

+-------+

| val+1 |

+-------+

| 8 |

+-------+

1 row in set (0.00 sec)

zloctb answered 2019-05-24T21:48:39Z

1 votes

如果为数字列指定ZEROFILL,MySQL会自动将UNSIGNED属性添加到列中。

允许UNSIGNED属性的数字数据类型也允许SIGNED。 但是,默认情况下会对这些数据类型进行签名,因此SIGNED属性不起作用。

以上描述取自MYSQL官方网站。

Adeel answered 2019-05-24T21:49:16Z

0 votes

ZEROFILL

这实质上意味着如果将整数值23插入宽度为8的INT列中,则剩余的可用位置将自动用零填充。

于是

23

变为:

00000023

Simon H answered 2019-05-24T21:49:54Z

0 votes

与...一起使用时   可选(非标准)属性   ZEROFILL,默认填充   空格用零替换。 对于   例如,对于声明为的列   INT(4)ZEROFILL,值为5   检索为0005。

[http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html]

Daniel Kutik answered 2019-05-24T21:50:26Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值