本帖最后由 phper002 于 2010-11-25 18:25:13 编辑

解决方案 »

  1.   

    你都搜到,显示宽度了当建表时候指定这个M值,同时指定zerofill的时候现假如`id` mediumint(4) unsigned zerofill DEFAULT NULL,
    M值是4,现在你插入了一个数2,那么字段会显示成0004如果插入40000,则依然是40000
      

  2.   

    如果是varchar(32),如果不足,是在后面加空格吗?
    似乎只是数据保存在文件中的时候是这样的,而取出来还是没有前导0和后面的空格的吧?只是为了对其?
      

  3.   

    那么这个显示宽度8和该类型实际能存诸的字节数3是个什么关系呢?一般而言,一个字节=8位。3字节能存2的8次方*3的数据值手册:
    数值型
    M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。
    -----------------上面说显示值和保存值无关。值还是那个值。但显示时会作一下处理。如果值大于显示宽,值原样显示。没测。
      

  4.   

    我想这是一个值得所有phper共同关注的问题
      

  5.   

    的确意义不大,所以你不写后面的数字也没有关系
    直接写int/tinyint/ 等也一样