ビット列とは 1 と 0 のビットが連続したものです。 ビットマスクを格納したり顕在化するために使用されます。 SQL のビット型には 2 つあります。 BIT(n) と BIT VARYING(n) です (n は正の整数)。
BIT 型のデータは厳密に n で表される長さに一致しなければなりません。 この長さより長いか短いビット列を格納しようとするとエラーになります。 BIT VARYING 型のデータは最大長 n までの可変長です。 最大長を越えるビット列は受け付けません。 長さ指定のない BIT データ型は BIT(1) データ型と同一で、長さ指定のない BIT VARYING データ型は無限長を意味します。
Note: ビット列の値を明示的に BIT(n) にキャストすると、厳密に n ビットになるように、切り捨てられるか右側をゼロ詰めされ、エラーにはなりません。 同様に、ビット列の値を明示的に BIT VARYING(n) にキャストすると、ビット数が n を越える場合は右側が切り捨てられます。
Note: PostgreSQL の 7.2 より前のバージョンでは、BIT データ型は、明示的なキャストの有無に関係なく、常に自動的に右側を切り捨てられるかゼロ詰めにされていました。 これは、SQL 標準に準拠するため変更されました。
ビット列定数に関する構文に付いての情報は Section 1.1.2.2 参照ください。ビット論理演算子とビット列操作関数が用意されています。Chapter 6 を参照してください。
Example 5-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', B'101'); SELECT * FROM test; a | b -----+----- 101 | 00 100 | 101