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