8.9. ビット列データ型

ビット列とは1と0のビットが連続したものです。 ビットマスクを格納したり顕在化するために使用されます。 SQLのビット型には2つあります。bit(n)bit varying(n)です。ここでnは正の整数です。

bit型のデータは厳密にnで表される長さに一致しなければなりません。 この長さより長いか短いビット列を格納しようとするとエラーになります。 bit varying型のデータは最大nまでの可変長です。 最大長を越えるビット列は受け付けません。 長さ指定のないbitデータ型はbit(1)データ型と同一で、長さ指定のないbit varyingデータ型は無限長を意味します。

注意: ビット列の値を明示的にbit(n)にキャストすると、厳密にnビットになるように、切り捨てられるか右側をゼロ詰めされ、エラーにはなりません。 同様に、ビット列の値を明示的にbit varying(n)にキャストすると、ビット数がnを越える場合は右側が切り捨てられます。

注意: PostgreSQLの7.2より前のバージョンでは、bitデータ型は、明示的なキャストの有無に関係なく、常に自動的に右側を切り捨てられるかゼロ詰めにされていました。 これは、標準SQLに準拠するため変更されました。

ビット列定数に関する構文についての情報は項4.1.2.2を参照してください。 ビット論理演算子とビット列操作関数が用意されています。 第9章を参照してください。

例 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