CREATE TABLE TEST ( `Value` TINYINT(1) );INSERT INTO TEST VALUES (1), (0), (-1), (100), (7);SELECT * FROM TEST;
为啥不是 0/1/0/1这样的结果呢?

解决方案 »

  1.   

    TINYINT(1)表示占用1个字节,范围是-256-255,1表示显示宽度。
      

  2.   

    显示宽度 究竟代表什么, 不是我SELECT出来看到的宽度?
      

  3.   

    TINYINT  范围 -128 到 127  
      

  4.   

    不好意思,#1说错了
    可以这么说,就是你查询出来的字段的显示宽度
    当字段宽度小于显示宽度时,默认在字段前面补充空格
    当字段宽度大于显示宽度时,字段值会完全显示,超过显示宽度的长度
    可以使用zerofill在前面补充0
      

  5.   

    tinyint(m)这里的m是指显示宽度, 不是存储宽度
    bit(m)这里的m是指存储宽度,所以tinying(1)跟bit是不同的mysql里bool或boolean是跟tinyint(1)相同的。
      

  6.   

    mysql没有Boolean类型的type 
    用tiny标识
      

  7.   

    哦,知道了,问题在这里当字段宽度大于显示宽度时,字段值会完全显示,超过显示宽度的长度那如果我只想有0/1(Bool),怎么才是最好的实现呢?
      

  8.   

    BIT字段好像在执行LAOD DATA LOCAL INFILE从文本文件导数据有问题
      

  9.   

    就用TINYINT(1)好了,只想要0/1的话可以在程序中对数据进行处理再写入sql