BIT类型中存储的是二进制值,类似010110。

    二进制字符串类型 长度 长度范围 占用空间
    BIT(M) M 1 <= M <= 64 约为(M + 7)/8个字节

    BIT类型,如果没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。这里(M)是表示二进制的位数,位数最小值为1,最大值为64。

    1. CREATE TABLE test_bit1(
    2. f1 BIT,
    3. f2 BIT(5),
    4. f3 BIT(64)
    5. );
    6. INSERT INTO test_bit1(f1)
    7. VALUES(1);
    8. #Data too long for column 'f1' at row 1
    9. INSERT INTO test_bit1(f1)
    10. VALUES(2);
    11. INSERT INTO test_bit1(f2)
    12. VALUES(23);

    注意:在向BIT类型的字段中插入数据时,一定要确保插入的数据在BIT类型支持的范围内。

    使用SELECT命令查询位字段时,可以用BIN()HEX()函数进行读取。

    1. mysql> SELECT * FROM test_bit1;
    2. +------------+------------+------------+
    3. | f1 | f2 | f3 |
    4. +------------+------------+------------+
    5. | 0x01 | NULL | NULL |
    6. | NULL | 0x17 | NULL |
    7. +------------+------------+------------+
    8. 2 rows in set (0.00 sec)
    1. mysql> SELECT BIN(f2),HEX(f2)
    2. -> FROM test_bit1;
    3. +---------+---------+
    4. | BIN(f2) | HEX(f2) |
    5. +---------+---------+
    6. | NULL | NULL |
    7. | 10111 | 17 |
    8. +---------+---------+
    9. 2 rows in set (0.00 sec)
    1. mysql> SELECT f2 + 0
    2. -> FROM test_bit1;
    3. +--------+
    4. | f2 + 0 |
    5. +--------+
    6. | NULL |
    7. | 23 |
    8. +--------+
    9. 2 rows in set (0.00 sec)

    可以看到,使用b+0查询数据时,可以直接查询出存储的十进制数据的值。