BIT类型中存储的是二进制值,类似010110。
| 二进制字符串类型 | 长度 | 长度范围 | 占用空间 |
|---|---|---|---|
| BIT(M) | M | 1 <= M <= 64 | 约为(M + 7)/8个字节 |
BIT类型,如果没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。这里(M)是表示二进制的位数,位数最小值为1,最大值为64。
CREATE TABLE test_bit1(f1 BIT,f2 BIT(5),f3 BIT(64));INSERT INTO test_bit1(f1)VALUES(1);#Data too long for column 'f1' at row 1INSERT INTO test_bit1(f1)VALUES(2);INSERT INTO test_bit1(f2)VALUES(23);
注意:在向BIT类型的字段中插入数据时,一定要确保插入的数据在BIT类型支持的范围内。
使用SELECT命令查询位字段时,可以用BIN()或HEX()函数进行读取。
mysql> SELECT * FROM test_bit1;+------------+------------+------------+| f1 | f2 | f3 |+------------+------------+------------+| 0x01 | NULL | NULL || NULL | 0x17 | NULL |+------------+------------+------------+2 rows in set (0.00 sec)
mysql> SELECT BIN(f2),HEX(f2)-> FROM test_bit1;+---------+---------+| BIN(f2) | HEX(f2) |+---------+---------+| NULL | NULL || 10111 | 17 |+---------+---------+2 rows in set (0.00 sec)
mysql> SELECT f2 + 0-> FROM test_bit1;+--------+| f2 + 0 |+--------+| NULL || 23 |+--------+2 rows in set (0.00 sec)
可以看到,使用b+0查询数据时,可以直接查询出存储的十进制数据的值。
