5.9. ビット列データ型

ビット列とは 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