# 8.10.位字符串类型

位字符串是1和0的字符串。它们可用于存储或可视化位掩码。有两种SQL位类型:一点点(*n*)位变(*n*)哪里*n*是一个正整数。

一点类型数据必须与长度匹配*n确切地尝试存储较短或较长的位字符串是错误的。位变数据长度可变,最长可达最大长度n*; 较长的字符串将被拒绝。写一点没有长度等于位(1)虽然位变没有长度规格意味着长度不受限制。

# 笔记

如果显式地将位字符串值强制转换为一点点(*n*),它将被截断或在右侧填充零,以便精确地*n位,而不会引发错误。类似地,如果显式地将位字符串值强制转换为位变(*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