PostgreSQL 9.2.4文書 | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 8章データ型 | 次のページ |
ビット列とは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の説明と同様、長い値は圧縮または行外に移動する可能性があります。)