MySql tinyint使用最大显示宽度参数

时间:2014-01-15 00:21:16

标签: mysql

MySql documentation声明:

  

M表示整数类型的最大显示宽度。

我有:

CREATE TABLE `one` (x TINYINT(2));// set the display value to 2 digits

INSERT INTO `one` (x) VALUES (9);

SELECT * FROM `one`;

输出:

+------+
| x    |
+------+
|    9 |
+------+

两位数显示宽度在哪里;我看到一个4位宽的视图,如:

+------+
| x    |
+------+
| 0009 |
+------+

2 个答案:

答案 0 :(得分:0)

显示宽度是客户端的表示提示,命令行客户端似乎忽略了这些提示,并且可以自由地执行此操作。

MySQL本身使用显示宽度的唯一时间是在列上指定ZEROFILL时 - 包含值int(4)的{​​{1}}将被检索为684 }。

还可以找到更多信息in this topic,特别是this answer会增加一些额外信息。

答案 1 :(得分:-1)

我建议您尝试在列上添加NOT NULL约束。

请注意,列中NULL的值将显示为NULL,其中(不奇怪)需要4个显示字符。

INSERT INTO one VALUES (NULL);
SELECT * FROM one;

+------+
| x    |
+------+
|    9 |
| NULL |
+------+
2 rows in set (0.00 sec)

CREATE TABLE two (x TINYINT(2) NOT NULL);
INSERT INTO two VALUES (9);
SELECT * FROM two;

+---+
| x |
+---+
| 9 |
+---+
1 row in set (0.00 sec)