位串就是一串 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.3获取有关位串常量的语法信息。还有一些位逻辑操作符和位处理函数可用;参见节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