無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

9.6. ビット文字列関数と演算子

本節では、ビット文字列の検査と操作を行う関数と演算子について説明します。ビット文字列とは、 bit 型と bit varying 型の値のことです。通常の比較演算子に加え、 表9-10 に示す演算子も使用可能です。 & | # のビット文字列オペランドは同一長でなければなりません。ビットシフト処理の際、例に示す通り元の長さは保持されます。

表 9-10. ビット文字列演算子

演算子 説明 結果
|| 結合 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 , set_bit . ビット文字列に処理を行った場合、これらの関数は文字列の最初(一番左)のビットを0として数えます。

さらに、 bit 型から整数値にキャストすることも整数から bit 型にキャストすることも可能です。以下に例を示します。(訳注:原文はintegral valueとなっていますがinteger valueとして訳出)

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 ビット分複写されます。また、整数からビット数が元の整数より多いビット文字列にキャストする際、符号ビットでその左部分を拡張します。


powered by SEO.CUG.NET