位串类型

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 8. 数据类型 | 下一页

# 8.10. 位串类型

位串就是一串 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

位字符串值需要1字节，每组8位，增加5或8字节的开销取决于字符串的长度 （但是长值会被压缩或移动到另外一条线上， 第 8.3 节中有相关字符串的解释）。

上一页 | 起始页 | 下一页
网络地址类型 | 上一级 | 文本搜索类型