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

PolarDB:varbitx

最終更新日:Jun 28, 2024

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

関数

関数

説明

get_bit (varbit a, int b, int c) returns 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) returns varbit

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

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

bit_rand (int a, int b, float c) returns 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を返します。

使用法

  • varbitx拡張機能を作成する

    CREATE EXTENSION varbitx;
  • 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)

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