On this page
8.10. 位字符串类型
位字符串是 1 和 0 的字符串。它们可用于存储或可视化位掩码。有两种 SQL 位类型:bit(n)
和bit varying(n)
,其中* n
*是正整数。
bit
类型数据必须与长度* n
完全匹配;尝试存储较短或较长的位字符串是错误的。 bit varying
数据的长度可变,最大长度为 n
*;较长的字符串将被拒绝。没有长度的bit
等效于bit(1)
,而没有长度的bit varying
表示长度不受限制。
Note
如果将一个位字符串值显式转换为bit(n)
,则它将在右边被截断或补零,以正好是* n
位,而不会引发错误。同样,如果将一个位字符串值显式转换为bit varying(n)
,则如果它超过 n
*位,它将在右侧被截断。
有关位字符串常量的语法的信息,请参见Section 4.1.2.5。位逻辑运算符和字符串操作功能可用;参见Section 9.6。
实施例 8.3. 使用位字符串类型
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
一个位字符串值需要为每个 8 位组分配 1 个字节,再加上 5 或 8 个字节的开销(取决于字符串的长度)(但是长的值可能会被压缩或移出行,如Section 8.3中关于字符串的说明) 。