# 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