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

PostgreSQL 9.0.0文書
前のページ | 巻戻し | 第 9章関数と演算子 | 早送り | 次のページ

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

前のページ | ホーム | 次のページ
バイナリ列関数と演算子 | 上に戻る | パターンマッチ