MySQL 8.0.12 bit类型的最值

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/vkingnew/article/details/82689588
bit类型在MySQL算作二进制类型,和binary类型类似,只是bit存储的是二进制的数字(0和1).
创建一个表:
create table b(a bit(64));

mysql> insert into b select b'11111111';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0


mysql> select repeat(bin(a),8) from b;
+------------------------------------------------------------------+
| repeat(bin(a),8)                                                 |
+------------------------------------------------------------------+
| 1111111111111111111111111111111111111111111111111111111111111111 |
+------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql> insert into b select b'1111111111111111111111111111111111111111111111111111111111111111';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

--查询:
mysql> select bin(a),character_length(a),char_length(a),length(a),a+0 from b;
+------------------------------------------------------------------+---------------------+----------------+-----------+----------------------+
| bin(a)                                                           | character_length(a) | char_length(a) | length(a) | a+0                  |
+------------------------------------------------------------------+---------------------+----------------+-----------+----------------------+
| 11111111                                                         |                   8 |              8 |         8 |                  255 |
| 1111111111111111111111111111111111111111111111111111111111111111 |                   8 |              8 |         8 | 18446744073709551615 |
+------------------------------------------------------------------+---------------------+----------------+-----------+----------------------+
2 rows in set (0.00 sec)

可以看到bit(64)转为十进制最大为18446744073709551615 ;最值为2的64次方-1.
bit(m)存储的最大值和bigint unsigned 的最值是一样的。


mysql> select bin(a),a+0 from b;
+------------------------------------------------------------------+----------------------+
| bin(a)                                                           | a+0                  |
+------------------------------------------------------------------+----------------------+
| 11111111                                                         |                  255 |
| 1111111111111111111111111111111111111111111111111111111111111111 | 18446744073709551615 |
+------------------------------------------------------------------+----------------------+
2 rows in set (0.02 sec)

mysql> select 18446744073709551615=18446744073709551615;
+-------------------------------------------+
| 18446744073709551615=18446744073709551615 |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql> select power(2,8)-1;
+--------------+
| power(2,8)-1 |
+--------------+
|          255 |
+--------------+
1 row in set (0.03 sec)

mysql> select (power(2,64)-1)=18446744073709551615;
+--------------------------------------+
| (power(2,64)-1)=18446744073709551615 |
+--------------------------------------+
|                                    1 |
+--------------------------------------+
1 row in set (0.01 sec)

可以看到bit(64)存储的最大值和bigint unsigned的最值是一样大的。

猜你喜欢

转载自blog.csdn.net/vkingnew/article/details/82689588