在MySQL中,整数类型,有一个扩展的显示宽度指示器的概念。
一直搞不清楚这个显示宽度指示器是干什么用的,请方家指教。这个是表的定义:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for `test_table_1`
-- ----------------------------
DROP TABLE IF EXISTS `test_table_1`;
CREATE TABLE `test_table_1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`integer_row` int(8) unsigned DEFAULT NULL,
`float_row` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;这个是在终端中select的显示效果:
这个是用php输出数据的效果:
完全没看出来integer_row的显示宽度被设置成8位的效果啊。
不明白这个显示宽度指示器是干嘛用的,求教!mysql
一直搞不清楚这个显示宽度指示器是干什么用的,请方家指教。这个是表的定义:
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for `test_table_1`
-- ----------------------------
DROP TABLE IF EXISTS `test_table_1`;
CREATE TABLE `test_table_1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`integer_row` int(8) unsigned DEFAULT NULL,
`float_row` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;这个是在终端中select的显示效果:
这个是用php输出数据的效果:
完全没看出来integer_row的显示宽度被设置成8位的效果啊。
不明白这个显示宽度指示器是干嘛用的,求教!mysql
需要改成 `integer_row` int(8) zerofill unsigned DEFAULT NULL,
是用来控制客户端显示宽度的
一方面,按照现在比较容易查到的中文文档,这个显示宽度指示器,应该是用空格填充的,不应该限定必须zerofill吧?不过,我试了一下,设置zerofill后,显示宽度指示器明显的生效了。难道显示宽度指示器必须配合zerofill才有用?二个方面,ACMAIN_CHM版主,您说的我没有太理解。
我是这样输出的:echo '|' . $row->integer_row . '|';
论理,无论空格以什么规则呈现,只要有空格,那么在页面上,第一个“|”和数据直接至少应该显示出一个空格啊。
是这样
谢谢指导再问一句,zerofill之后,是仅在输出数据时显示为补0效果,数据库中依然按照整数方式保存,还是数据库里面就变成“00000007”这样的字符串了。