PostgreSQL コミュニティ版に組み込まれている varbit 拡張機能は、基本的な BIT 型演算のみをサポートしています。PolarDB for PostgreSQL および では、varbit 拡張機能に追加のビット演算を実装することで、リアルタイムユーザープロファイル推薦システム、アクセス制御広告システム、チケット発券システムなど、より幅広いユースケースに対応しています。
前提条件
PolarDB for PostgreSQL のバージョンが PostgreSQL 11 であること。
関数
|
関数 |
説明 |
|
|
位置 b から c ビットを抽出し、varbit 値を返します。 例: |
|
|
配列 d で指定されたインデックス位置のビットを b (0 または 1) に設定します。元の長さを超えるビットは c (0 または 1) で埋めます。 例: |
|
|
位置 c から d ビット内の b (0 または 1) の値の数をカウントします。範囲がビット文字列の長さを超える場合は、存在するビットのみをカウントします。 例: |
|
|
b (1 または 0) の値の数をカウントします。 例: |
|
|
長さ b のビット文字列を値 a (0 または 1) で埋めます。 例: |
|
|
長さ a のランダムなビット文字列を生成します。b (0 または 1) が出現する比率を c で指定します。 例: |
|
|
b (0 または 1) のインデックス位置の配列を返します。インデックスは 0 から始まります。c が true の場合、位置を昇順で返します。c が false の場合、位置を降順で返します。 例: |
|
|
b (0 または 1) のインデックス位置の配列を最大 c 個まで返します。インデックスは 0 から始まります。d が true の場合、位置を昇順で返します。d が false の場合、位置を降順で返します。 例: |
|
|
位置 b から c ビットを抽出し、d (0 または 1) の値のインデックス位置配列を返します。 例: |
|
|
配列 c で指定されたインデックス位置のビットが値 b (0 または 1) であるかを確認し、一致するインデックス位置を返します。ビット文字列の長さを超える位置は含めません。 例: |
|
|
配列 d で指定されたインデックス位置のビットを b (0 または 1) に設定します。e ビットを設定した後に停止します。元の長さを超えるビットは c (0 または 1) で埋めます。 例: |
|
|
配列 d で指定されたインデックス位置のビットを b (0 または 1) に設定します。元の長さを超えるビットは c (0 または 1) で埋めます。更新された varbit 値と、この操作で b に設定したビットのインデックス位置配列を返します。 例: |
|
|
配列 d で指定されたインデックス位置のビットを b (0 または 1) に設定します。元の長さを超えるビットは c (0 または 1) で埋めます。e ビットを正常に設定した後に停止します。更新された varbit 値と、この操作で b に設定したビットのインデックス位置配列を返します。 例: |
|
|
配列 c で指定されたインデックス位置にある、値が b (0 または 1) のビットの数をカウントします。 例: |
使用方法
-
拡張機能の作成
CREATE EXTENSION varbitx; -
拡張機能の削除
DROP EXTENSION varbitx; -
関数の使用
select <function>を使用します。例:-
bit_count 関数
select bit_count('1111000011110000', 1, 5, 4);以下の出力が返されます。
bit_count ----------- 1 (1 row) -
set_bit_array_record 関数
select set_bit_array_record('111100001111', 1, 0, array[1,4,5,6,7], 2);以下の出力が返されます。
set_bit_array_record ------------------------ (111111001111,"{4,5}") (1 row)
関数の詳細については、「関数」をご参照ください。
-