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
| Fungsi | Deskripsi |
get_bit (varbit a, int b, int c) returns varbit | Mengambil sejumlah bit tertentu c mulai dari posisi b dan mengembalikan string tipe VARBIT. Contoh: |
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: |
bit_count (varbit a, int b, int c, int d) returns int | Menghitung 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 (varbit a, int b) returns int | Menghitung jumlah total nilai b (0 atau 1). Contoh: |
bit_fill (int a, int b) returns varbit | Mengisi sejumlah bit tertentu b dengan nilai a (0 atau 1). Contoh: |
bit_rand (int a, int b, float c) returns varbit | Menghasilkan 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_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 (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: |
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 (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: |
set_bit_array (varbit a, int b, int c, int[] d, int e) returns varbit | 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). Jumlah bit yang dikembalikan adalah e. Contoh: |
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 (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: |
bit_count_array (varbit a, int b, int[] c) returns int | Menghitung jumlah nilai b (0 atau 1) di antara bit yang ditentukan oleh array subscript c. Contoh: |
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.
- Eksekusi pernyataan berikut untuk memanggil fungsi bit_count: