All Products
Search
Document Center

PolarDB:varbitx

Last Updated:Jul 02, 2025

Ekstensi varbit yang tersedia di edisi PostgreSQL Community hanya mendukung fungsi operasi tipe BIT dasar. Ekstensi varbitx pada PolarDB for PostgreSQL (Kompatibel dengan Oracle) mendukung berbagai operasi tipe BIT untuk skenario yang lebih kompleks, seperti rekomendasi profil pengguna secara real-time, kontrol akses iklan, dan manajemen tiket.

Fungsi

Fungsi

Deskripsi

get_bit (varbit a, int b, int c) returns varbit

Mengambil sejumlah bit c tertentu mulai dari posisi b dan mengembalikan string tipe VARBIT.

Contoh: get_bit('111110000011', 3, 5) mengembalikan 11000.

set_bit_array (varbit a, int b, int c, int[] d) returns varbit

Mengubah nilai bit yang ditentukan oleh larik subskrip d menjadi nilai b (0 atau 1), serta mengisi bit yang melebihi panjang asli dengan nilai c (0 atau 1).

Contoh: set_bit_array('111100001111', 0, 1, array[1,15]) mengembalikan 1011000011111110.

bit_count (varbit a, int b, int c, int d) returns int

Menghitung jumlah nilai b (0 atau 1) yang dimulai dari posisi c di antara sejumlah bit d tertentu. Bit yang melampaui panjang yang ditentukan tidak dihitung.

Contoh: bit_count('1111000011110000', 1, 5, 4) mengembalikan 1.

bit_count (varbit a, int b) returns int

Menghitung jumlah total nilai b (0 atau 1).

Contoh: bit_count('1111000011110000', 1) mengembalikan 8.

bit_fill (int a, int b) returns varbit

Mengisi sejumlah bit b tertentu dengan nilai a (0 atau 1).

Contoh: bit_fill(0,10) mengembalikan 0000000000.

bit_rand (int a, int b, float c) returns varbit

Mengambil persentase acak c dari sejumlah bit a tertentu, serta mengisi bit yang diperoleh secara acak dengan nilai b (0 atau 1).

Contoh: bit_rand(10, 1, 0.3) dapat mengembalikan 0101000001.

bit_posite (varbit a, int b, boolean c) returns int[]

Mengembalikan larik subskrip yang menunjukkan posisi bit dengan nilai b (0 atau 1). Subskrip dimulai dari 0. Jika nilai c adalah true, subskrip dikembalikan dalam urutan positif; jika false, dalam urutan negatif.

Contoh: bit_posite ('11110010011', 1, true) mengembalikan [0,1,2,3,6,9,10], sedangkan bit_posite ('11110010011', 1, false) mengembalikan [10,9,6,3,2,1,0].

bit_posite (varbit a, int b, int c, boolean d) returns int[]

Mengembalikan larik subskrip yang menunjukkan posisi bit dengan nilai b (0 atau 1). Jumlah subskrip dalam larik adalah c. Subskrip dimulai dari 0. Jika nilai d adalah true, subskrip dikembalikan dalam urutan positif; jika false, dalam urutan negatif.

Contoh: bit_posite ('11110010011', 1, 3, true) mengembalikan [0,1,2], sedangkan bit_posite ('11110010011', 1, 3, false) mengembalikan [10,9,6].

get_bit_array (varbit a, int b, int c, int d) returns int[]

Mengambil sejumlah bit c tertentu mulai dari posisi b, mengidentifikasi bit dengan nilai d (0 atau 1) di antara bit yang diperoleh, dan mengembalikan larik subskrip yang menunjukkan posisi bit tersebut.

Contoh: get_bit_array('111110000011', 3, 5, 1) mengembalikan [3,4] untuk rentang bit 11000 yang ditentukan.

get_bit_array (varbit a, int b, int[] c) returns int[]

Mengambil bit yang ditentukan oleh larik subskrip c, mengidentifikasi bit dengan nilai b (0 atau 1) di antara bit yang diperoleh, dan mengembalikan larik subskrip yang menunjukkan posisi bit tersebut. Bit yang tidak termasuk dalam larik subskrip c tidak dihitung.

Contoh: get_bit_array('111110000011', 1, array[1,5,6,7,10,11]) mengembalikan [1,10,11].

set_bit_array (varbit a, int b, int c, int[] d, int e) returns varbit

Mengubah nilai bit yang ditentukan oleh larik subskrip d menjadi nilai b (0 atau 1), serta mengisi bit yang melampaui panjang asli dengan nilai c (0 atau 1). Jumlah bit yang dikembalikan adalah e.

Contoh: set_bit_array('111100001111', 1, 0, array[4,5,6,7], 2) mengembalikan 111111001111.

set_bit_array_record (varbit a, int b, int c, int[] d) returns (varbit,int[])

Mengubah nilai bit yang ditentukan oleh larik subskrip d menjadi nilai b (0 atau 1), serta mengisi bit yang melampaui panjang asli dengan nilai c (0 atau 1). Fungsi ini mengembalikan string bit dan larik subskrip yang menunjukkan posisi bit yang nilainya diubah.

Contoh: set_bit_array_record('111100001111', 0, 1, array[1,15]) mengembalikan 1011000011111110 dan [1,15].

set_bit_array_record (varbit a, int b, int c, int[] d, int e) returns (varbit,int[])

Mengubah nilai bit yang ditentukan oleh larik subskrip d menjadi nilai b (0 atau 1), serta mengisi bit yang melampaui panjang asli dengan nilai c (0 atau 1). Fungsi ini mengembalikan string bit dan larik subskrip yang menunjukkan posisi bit yang nilainya diubah. Fungsi ini mengembalikan hasil setelah mengubah nilai untuk total e bit.

Contoh: set_bit_array_record('111100001111', 1, 0, array[1,4,5,6,7], 2) mengembalikan 111111001111 dan [4,5].

bit_count_array (varbit a, int b, int[] c) returns int

Menghitung jumlah nilai b (0 atau 1) di antara bit yang ditentukan oleh larik subskrip c.

Contoh: bit_count_array('1111000011110000', 1, array[1,2,7,8]) mengembalikan 3.

Penggunaan

  • Buat ekstensi varbitx:

    CREATE EXTENSION varbitx;
  • Hapus ekstensi varbitx:

    DROP EXTENSION varbitx;
  • Panggil fungsi-fungsi:

    Anda dapat mengeksekusi pernyataan SELECT <function> untuk memanggil fungsi-fungsi tersebut. Contohnya:

    • Fungsi bit_count:

      select bit_count('1111000011110000', 1, 5, 4);

      Hasil sampel:

       bit_count   
      -----------  
               1  
      (1 row)  
    • Fungsi set_bit_array_record:

      select set_bit_array_record('111100001111', 1, 0, array[1,4,5,6,7], 2);

      Hasil sampel:

        set_bit_array_record    
      ------------------------  
       (111111001111,"{4,5}")  
      (1 row)

    Untuk informasi lebih lanjut tentang fungsi-fungsi dan deskripsinya, lihat Fungsi yang didukung.