比特类型

比特类型是计算机中存储和处理数据的基本单位,它表示计算机中最小的可寻址的存储单元。一个比特只能表示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 类型是一种用于存储位序列的数据类型,它可以用来存储固定长度的位序列或可变长度的位序列。它支持位操作符进行位运算,能够灵活处

12-24 07:59