位串类型#

位串就是一串 1 和 0 的字符串。它们可以用于存储和直观化位掩码。 我们有两种 SQL 位类型:bit(n) 和bit varying(n), 这里的n是一个正整数。

bit类型的数据必须准确匹配长度n, 试图存储短些或者长一些的数据都是错误的。bit varying 类型数据是最大长度为n的变长类型;更长的串会被拒绝。 写一个没有长度的bit等效于bit(1), 没有长度的bit varying意思是没有长度限制。

备注

如果我们明确地把一个位串值转换成bit(n), 那么它的右边将被截断或者在右边补齐零,直到刚好n位, 而不会抛出任何错误。类似地,如果我们明确地把一个位串数值转换成 bit varying(n),如果它超过了n位, 那么它的右边将被截断。

请参考 位串常量 获取有关位串常量的语法信息。 还有一些位逻辑操作符和位处理函数可用;参见 位串函数和操作符

例. 使用位串类型

CREATE TABLE test (a BIT(3), b BIT VARYING(5));
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)
INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;
  a  |  b
-----+-----
 101 | 00
 100 | 101

备注

ORC/Hudi/MAGMA格式的表都不支持bit(n)和bit varying(n)类型。