位串是由 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
位,则会在右侧被截断。
有关位串常量的语法信息,请参阅第 4.1.2.5 节。可以使用位逻辑运算符和字符串操作函数;请参阅第 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 个字节的开销,具体取决于字符串的长度(但是长值可能会被压缩或移出内联,如第 8.3 节中针对字符串的解释)。
如果您在文档中发现任何不正确、与您使用特定功能的体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。