比特类型是计算机中存储和处理数据的基本单位,它表示计算机中最小的可寻址的存储单元。一个比特只能表示0或1,可以用来表示二进制数。多个比特可以组合成更复杂的数据类型,例如字节(byte)、字(word)、双字(double word)等。
比特类型的大小通常由计算机的架构决定,常见的比特类型有8位、16位、32位和64位等。不同的数据类型在内存中占用的空间大小也不同,例如一个8位的整数可以表示范围为-128到127的整数,而一个32位的整数可以表示范围为-2147483648到2147483647的整数。
总结来说,数据类型是用来表示数据的分类或类别的概念,而比特类型是计算机中存储和处理数据的最小单位。比特类型的大小决定了数据类型在内存中占用的空间大小。
在 PostgreSQL 中,bit 类型是一种可以用来存储位序列的数据类型。它可以用来表示固定长度的位序列,比如用来存储二进制数据或者表示一组开关状态等。
bit 类型有两种变种:bit(n) 和 bit varying(n),其中 n 表示位序列的长度。bit(n) 类型用于存储固定长度的位序列,而 bit varying(n) 类型用于存储可变长度的位序列。
CREATE TABLE test (a BIT(3), b BIT VARYING(5));
在插入数据时,可以使用 B’…’ 或者 X’…’ 来表示二进制的位序列。
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10', B'101');
在查询数据时,会出现如下错误
ERROR: bit string length 2 does not match type bit(3)
因为B’10’不符合BIT(3)要求
我们可以使用下面语句强转
INSERT INTO test VALUES (B'10'::bit(3), B'101');
结果如下
SELECT * FROM test;
a | b
-----+-----
101 | 00
100 | 101
需要注意的是,bit 类型在 PostgreSQL 中存储为变长二进制(VARBIT),因此它的存储空间是按需分配的,不会浪费空间。另外,bit(n) 和 bit varying(n) 的 n 值必须是正整数,且最大不能超过 8388607。
总结来说,PostgreSQL 的 bit 类型是一种用于存储位序列的数据类型,它可以用来存储固定长度的位序列或可变长度的位序列。它支持位操作符进行位运算,能够灵活处