本節では、ビット文字列の検査と操作を行う関数と演算子について説明します。 ビット文字列とは、bit型とbit varying型の値のことです。 通常の比較演算子に加え、表9-10に示す演算子も使用可能です。 &、|、#のビット文字列オペランドは同一長でなければなりません。 ビットシフト処理の際、例に示す通り元の長さは保持されます。
表 9-10. ビット文字列演算子
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
|| | 連結 | B'10001' || B'011' | 10001011 |
& | ビット積 | B'10001' & B'01101' | 00001 |
| | ビット和 | B'10001' | B'01101' | 11101 |
# | ビットXOR | B'10001' # B'01101' | 11100 |
~ | ビット否定 | ~ B'10001' | 01110 |
<< | ビット左シフト | B'10001' << 3 | 01000 |
>> | ビット右シフト | B'10001' >> 2 | 00100 |
次の標準SQL関数は文字列同様にビット文字列で動作します。 length、bit_length、octet_length、position、substring
更に、bit型から整数値にキャストすることも整数からbit型にキャストすることも可能です。 以下に例を示します。
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
単に"bit"にキャストすることは bit(1)にキャストすることを意味することに注意してください。 つまり、単に整数の最下位ビットのみが伝播されることになります。
注意: PostgreSQL 8.0より前まででは、整数をbit(n)にキャストすることは、整数の最上位ビットからnビットまでがコピーされました。 現在は最下位ビットからnビット分コピーされます。 また、整数からビット数が元の整数より多いビット文字列にキャストする際、符号ビットでその左部分を拡張します。