diE*_*cho 153 mysql types unsigned-integer
我只是想知道ZEROFILL为INTDataType 定义的好处/用法是MySQL什么?
`id` INT UNSIGNED ZEROFILL NOT NULL
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 238
当您选择类型为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;
Run Code Online (Sandbox Code Playgroud)
结果:
x y
00000001 1
00000012 12
00000123 123
123456789 123456789
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 127
一个例子是为了理解ZEROFILL的使用可能有用的地方:
在德国,我们有5位数的邮政编码.但是,这些代码可能以零开头,因此80337是munic的有效邮政编码,01067是柏林的邮政编码.
如您所见,任何德国公民都希望邮政编码显示为5位数代码,因此1067看起来很奇怪.
为了存储这些数据,您可以使用VARCHAR(5)或INT(5)ZEROFILL,而零填充整数有两个很大的优点:
也许这个例子有助于理解ZEROFILL的使用.
Eli*_*ine 60
对于喜欢方盒的受干扰的人来说,这是一个特色.
你插入
1
23
123
Run Code Online (Sandbox Code Playgroud)
但是当你选择时,它会填充值
000001
000023
000123
Run Code Online (Sandbox Code Playgroud)
Ken*_*Ken 15
它有助于在您需要的情况下正确的排序串连这个"整"用别的东西(另一个号码或文字),这将需要进行排序为"文本"即可.
例如,
如果你需要使用整数字段数字(比方说5)连接为A-005或10/0005
我知道我迟到了,但我发现 zerofill 对 TINYINT(1) 的布尔表示很有帮助。Null 并不总是意味着 False,有时您不希望它如此。通过对 tinyint 进行零填充,您可以有效地将这些值转换为 INT 并消除您的应用程序在交互时可能产生的任何混淆。然后,您的应用程序可以以类似于原始数据类型 True = Not(0) 的方式处理这些值