全部产品
Search
文档中心

ApsaraDB RDS:Menggunakan Plugin varbitx

更新时间:Jun 25, 2025

Plugin varbit yang tersedia di edisi Komunitas PostgreSQL hanya mendukung fungsi operasi tipe BIT sederhana. Plugin varbitx merupakan ekstensi dari plugin varbit dan disediakan di ApsaraDB RDS for PostgreSQL untuk mendukung lebih banyak operasi tipe BIT dalam berbagai skenario, seperti rekomendasi profil pengguna secara real-time, kontrol akses iklan, dan tiket.

Prasyarat

Instans RDS Anda harus menjalankan salah satu versi PostgreSQL berikut:
  • PostgreSQL 11
  • PostgreSQL 10

Fungsi yang didukung

FungsiDeskripsi
get_bit (varbit a, int b, int c) returns varbitMengambil sejumlah bit tertentu c 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 array subscript d menjadi nilai b (0 atau 1), serta mengisi bit yang melebihi panjang aslinya 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 intMenghitung jumlah nilai b (0 atau 1) mulai dari posisi c di antara sejumlah bit tertentu d. 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 varbitMengisi sejumlah bit tertentu b dengan nilai a (0 atau 1).

Contoh: bit_fill(0,10) mengembalikan 0000000000.

bit_rand (int a, int b, float c) returns varbitMenghasilkan persentase acak c dari bit dari sejumlah bit tertentu a, serta mengisi bit yang diperoleh dengan nilai b (0 atau 1) secara acak.

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

bit_posite (varbit a, int b, boolean c) returns int[]Mengembalikan array subscript yang menunjukkan posisi bit dengan nilai b (0 atau 1). Subscript dimulai dari 0. Jika nilai c adalah true, subscript 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 array subscript yang menunjukkan posisi bit dengan nilai b (0 atau 1). Jumlah subscript dalam array adalah c. Subscript dimulai dari 0. Jika nilai d adalah true, subscript 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 tertentu c mulai dari posisi b, mengidentifikasi bit dengan nilai d (0 atau 1) di antara bit yang diperoleh, dan mengembalikan array subscript yang menunjukkan posisi bit tersebut.

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

get_bit_array (varbit a, int b, int[] c) returns int[]Mengambil bit yang ditentukan oleh array subscript c, mengidentifikasi bit dengan nilai b (0 atau 1) di antara bit yang diperoleh, dan mengembalikan array subscript yang menunjukkan posisi bit tersebut. Bit yang tidak termasuk dalam array subscript 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 varbitMengubah nilai bit yang ditentukan oleh array subscript d menjadi nilai b (0 atau 1), serta mengisi bit yang melampaui panjang aslinya 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 array subscript d menjadi nilai b (0 atau 1), serta mengisi bit yang melampaui panjang aslinya dengan nilai c (0 atau 1). Fungsi ini mengembalikan string bit dan array subscript 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 array subscript d menjadi nilai b (0 atau 1), serta mengisi bit yang melampaui panjang aslinya dengan nilai c (0 atau 1). Fungsi ini mengembalikan string bit dan array subscript 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 intMenghitung jumlah nilai b (0 atau 1) di antara bit yang ditentukan oleh array subscript c.

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

Penggunaan Dasar

  • Buat plugin varbitx.
    CREATE EXTENSION varbitx;
  • Hapus plugin varbitx.
    DROP EXTENSION varbitx;
  • Panggil fungsi yang didukung oleh plugin varbitx.

    Eksekusi pernyataan SELECT <function> untuk memanggil fungsi tersebut.

    • Eksekusi pernyataan berikut untuk memanggil fungsi bit_count:
      select bit_count('1111000011110000', 1, 5, 4);

      Hasil berikut dikembalikan:

       bit_count   
      -----------  
               1  
      (1 row)  
    • Eksekusi pernyataan berikut untuk memanggil fungsi set_bit_array_record:
      select set_bit_array_record('111100001111', 1, 0, array[1,4,5,6,7], 2);

      Hasil berikut dikembalikan:

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

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