バージョンごとのドキュメント一覧

8.10. ビット列データ型 #

<title>Bit String Types</title>

Bit strings are strings of 1's and 0's. They can be used to store or visualize bit masks. There are two SQL bit types: <type>bit(<replaceable>n</replaceable>)</type> and <type>bit varying(<replaceable>n</replaceable>)</type>, where <replaceable>n</replaceable> is a positive integer. ビット列とは1と0のビットが連続したものです。 ビットマスクを格納したり可視化するために使用されます。 SQLのビット型には2つあります。 bit(n)bit varying(n)です。 ここでnは正の整数です。

<type>bit</type> type data must match the length <replaceable>n</replaceable> exactly; it is an error to attempt to store shorter or longer bit strings. <type>bit varying</type> data is of variable length up to the maximum length <replaceable>n</replaceable>; longer strings will be rejected. Writing <type>bit</type> without a length is equivalent to <literal>bit(1)</literal>, while <type>bit varying</type> without a length specification means unlimited length. bit型のデータはnで表される長さに正確に一致しなければなりません。 この長さより長いか短いビット列を格納しようとするとエラーになります。 bit varying型のデータは最大nまでの可変長です。 最大長を超えるビット列は受け付けません。 長さ指定のないbitデータ型はbit(1)データ型と同一で、長さ指定のないbit varyingデータ型は無限長を意味します。

注記

If one explicitly casts a bit-string value to <type>bit(<replaceable>n</replaceable>)</type>, it will be truncated or zero-padded on the right to be exactly <replaceable>n</replaceable> bits, without raising an error. Similarly, if one explicitly casts a bit-string value to <type>bit varying(<replaceable>n</replaceable>)</type>, it will be truncated on the right if it is more than <replaceable>n</replaceable> bits. ビット列の値を明示的にbit(n)にキャストすると、厳密にnビットになるように、切り捨てられるか右側をゼロ詰めされ、エラーにはなりません。 同様に、ビット列の値を明示的にbit varying(n)にキャストすると、ビット数がnを超える場合は右側が切り捨てられます。

Refer to <xref linkend="sql-syntax-bit-strings"/> for information about the syntax of bit string constants. Bit-logical operators and string manipulation functions are available; see <xref linkend="functions-bitstring"/>. ビット列定数に関する構文についての情報は4.1.2.5を参照してください。 ビット論理演算子とビット列操作関数が利用可能ですが、9.6を参照してください。

例8.3 ビット列データ型の使用

<title>Using the Bit String Types</title>
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


A bit string value requires 1 byte for each group of 8 bits, plus 5 or 8 bytes overhead depending on the length of the string (but long values may be compressed or moved out-of-line, as explained in <xref linkend="datatype-character"/> for character strings). ビット列の値は8ビット毎に1バイト、さらにビット列長に応じた5または8バイトのオーバーヘッドが必要です。 (しかし、文字列に関する8.3で説明したように、長い値は圧縮または行外に移動する可能性があります。)