本節では、ビット文字列の検査と操作を行う関数と演算子について説明します。ビット文字列とは、bit
型とbit varying
型の値のことです。
通常の比較演算子に加え、表9.13「ビット文字列演算子」に示す演算子も使用可能です。
&
、|
、#
のビット文字列オペランドは同一長でなければなりません。
ビットシフト処理の際、例に示す通り元の長さは保持されます。
表9.13 ビット文字列演算子
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
|| | 結合 | B'10001' || B'011' | 10001011 |
& | ビットのAND | B'10001' & B'01101' | 00001 |
| | ビットのOR | B'10001' | B'01101' | 11101 |
# | ビットのXOR | B'10001' # B'01101' | 11100 |
~ | ビットのNOT | ~ B'10001' | 01110 |
<< | ビットの左シフト | B'10001' << 3 | 01000 |
>> | ビットの右シフト | B'10001' >> 2 | 00100 |
次の標準SQL関数は文字列同様にビット文字列で動作します。
、
length
、
bit_length
、
octet_length
、
position
、
substring
。
overlay
次の関数はバイナリ同様にビット文字列で動作します。
、
get_bit
。
ビット文字列に処理を行った場合、これらの関数は文字列の最初(一番左)のビットを0として数えます。
set_bit
さらに、bit
型から整数値にキャストすることも整数からbit
型にキャストすることも可能です。
以下に例を示します。
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
単に「bit」にキャストすることはbit(1)
にキャストすることを意味することに注意してください。つまり、単に整数の最下位ビットのみが渡されることになります。
整数をbit(n)
にキャストすると、整数の最下位ビットからn
ビット分複写されます。
整数からビット数が元の整数より多いビット文字列にキャストする際、符号ビットでその左部分を拡張します。