他のバージョンの文書11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

8.10. ビット列データ型

ビット列とは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を超える場合は右側が切り捨てられます。

ビット列定数に関する構文についての情報は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
-----+-----
 101 | 00
 100 | 101

ビット列の値は8ビット毎に1バイト、さらにビット列長に応じた5または8バイトのオーバーヘッドが必要です。 (しかし、文字列に関する8.3. 文字型で説明したように、長い値は圧縮または行外に移動する可能性があります。)