すべてのプロダクト
Search
ドキュメントセンター

PolarDB:varbitx

最終更新日:Jun 21, 2024

PostgreSQL Communityエディションで提供されているvarbit拡張機能は、単純なBITタイプの操作関数のみをサポートします。 PolarDB for PostgreSQL のvarbitx拡張機能は、より多くのシナリオでより多くのBITタイプの操作をサポートします。 これらのシナリオには、リアルタイムのユーザープロファイルの推奨、アクセス制御広告、および発券が含まれます。

前提条件

PolarDB for PostgreSQLクラスターでPostgreSQL 11が実行されます。

関数

関数説明
get_bit (varbit a、int b、int c) はvarbitを返します位置bで始まる指定された数cのビットを取得し、VARBITタイプの文字列を返します。

たとえば、get_bit('111110000011', 3,5) は11000を返します。

set_bit_array (varbit a, int b, int c, int[] d) returns varbit下付き文字列dで指定されたビットの値を値b (0または1) に変更し、元の長さを超えるビットを値c (0または1) で埋めます。

たとえば、set_bit_array('111100001111', 0,1, array[1,15]) は1011000011111110を返します。

bit_count (varbit a, int b, int c, int d) returns int指定されたビット数dのうち、位置cから始まる値b (0または1) の数をカウントします。 指定された長さを超えるビットはカウントされません。

たとえば、bit_count('1111000011110000', 1, 5, 4) は1を返します。

bit_count (varbit a, int b) returns int値b (0または1) の総数をカウントします。

たとえば、bit_count('1111000011110000', 1) は8を返します。

bit_fill (int a、int b) はvarbitを返します指定された数bのビットを値a (0または1) で埋めます。

たとえば、bit_fill(0,10) は0000000000を返します。

bit_rand (int a、int b、float c) はvarbitを返します指定されたビット数aからランダムな割合cのビットを取得し、取得したビットを値b (0または1) でランダムに埋めます。

例えば、bit_rand (10,1, 0.3) が0101000001を返してもよい。

bit_posite (varbit a, int b, boolean c) returns int[]下付き文字配列を返します。 添字配列は、値がb (0または1) であるビットの位置を示す。 下付き文字は0から始まります。 cの値がtrueの場合、サブスクリプトは正の順序で返されます。 cの値がfalseの場合、サブスクリプトは負の順序で返されます。

たとえば、bit_posite ('11110010011', 1, true) は [0,1,2,3,6,9,10] を返し、bit_posite ('11110010011', 1, false) は [10,9,6,3,2,1,0] を返します。

bit_posite (varbit a, int b, int c, boolean d) returns int[]下付き文字配列を返します。 添字配列は、値がb (0または1) であるビットの位置を示す。 下付き文字配列の下付き文字の数はcです。 下付き文字は0から始まります。 dの値がtrueの場合、サブスクリプトは正の順序で返されます。 dの値がfalseの場合、添え字は負の順序で返されます。

たとえば、bit_posite ('11110010011', 1,3, true) は [0,1,2] を返し、bit_posite ('11110010011', 1,3, false) は [10,9,6] を返します。

get_bit_array (varbit a, int b, int c, int d) returns int[]位置bから始まるビットの指定数cを取得し、取得したビットのうち値がd (0または1) であるビットを識別し、下付き文字配列を返す。 下付き文字配列は、識別されたビットの位置を示す。

たとえば、get_bit_array('111110000011', 3,5, 1) は、指定された11000ビット列に対して [3,4] を返します。

get_bit_array (varbit a, int b, int[] c) returns int[]下付き文字配列cで指定されるビットを取得し、取得したビットのうち値がb (0または1) であるビットを識別し、下付き文字配列を返す。 下付き文字配列は、識別されたビットの位置を示す。 添字配列cに含まれないビットはカウントされない。

たとえば、get_bit_array('111110000011', 1, array[1,5,6,7,10,11]) は [1,10,11] を返します。

set_bit_array (varbit a, int b, int c, int[] d, int e) returns varbit下付き文字配列dで指定されたビットの値を値b (0または1) に変更し、元の長さを超えるビットを値c (0または1) で埋めます。 返されるビット数はeです。

たとえば、set_bit_array('111100001111', 1,0, array[4,5,6,7], 2) は111111001111を返します。

set_bit_array_record (varbit a, int b, int c, int[] d) returns (varbit,int[])下付き文字配列dで指定されたビットの値を値b (0または1) に変更し、元の長さを超えるビットを値c (0または1) で埋めます。 この関数は、ビット列だけでなく、添え字配列も返します。 下付き文字配列は、値が変更されるビットの位置を示す。

たとえば、set_bit_array_record('111100001111', 0, 1, array[1,15]) は、1011000011111110と [1,15] を返します。

set_bit_array_record (varbit a, int b, int c, int[] d, int e) returns (varbit,int[])下付き文字配列dで指定されたビットの値を値b (0または1) に変更し、元の長さを超えるビットを値c (0または1) で埋めます。 この関数は、ビット列だけでなく、添え字配列も返します。 下付き文字配列は、値が変更されるビットの位置を示す。 この関数は、合計eビットの値を変更した直後に結果を返します。

たとえば、set_bit_array_record('111100001111', 1,0, array[1,4,5,6,7], 2) は、111111001111と [4,5] を返します。

bit_count_array (varbit a, int b, int[] c) returns int添字配列cで指定されるビットのうち、値b (0または1) の数をカウントします。

たとえば、bit_count_array('1111000011110000', 1, array[1,2,7,8]) は3を返します。

Usage

  • varbitx拡張機能の作成
    Create extension varbitx;
  • varbitx拡張子を削除する
    DROP extension varbitx;
  • 関数の呼び出し

    SELECT <function> ステートメントを実行して、関数を呼び出すことができます。 例:

    • bit_count関数
      select bit_count('1111000011110000', 1, 5, 4);

      サンプル結果:

      bit_count
      -----------  
               1
      (1行) 
    • 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行) 

    関数とその説明の詳細については、「関数」をご参照ください。