Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi BIT_OR menjalankan operasi OR bit-wise pada semua nilai dalam kolom atau ekspresi integer tunggal. Fungsi ini menggabungkan setiap bit dari setiap nilai biner yang sesuai dengan setiap nilai integer dalam ekspresi.
Misalnya, tabel Anda berisi empat nilai integer dalam kolom: 3, 7, 10, dan 22. Bilangan bulat ini direpresentasikan dalam bentuk biner sebagai berikut.
Bilangan Bulat | Nilai biner |
---|---|
3 | 11 |
7 | 111 |
10 | 1010 |
22 | 10110 |
Jika Anda menerapkan fungsi BIT_OR ke kumpulan nilai integer, operasi mencari nilai apa pun di mana a 1
ditemukan di setiap posisi. Dalam hal ini, a 1
ada di lima posisi terakhir untuk setidaknya satu dari nilai, menghasilkan hasil biner00011111
; oleh karena itu, fungsi mengembalikan 31
(atau16 + 8 + 4 + 2 + 1
).
Sintaksis
BIT_OR ( [DISTINCT | ALL] expression )
Argumen
- ekspresi
-
Kolom target atau ekspresi tempat fungsi beroperasi. Ekspresi ini harus memiliki INT, INT2, atau tipe INT8 data. Fungsi mengembalikan INT setara, INT2, atau tipe INT8 data.
- BERBEDA | SEMUA
-
Dengan argumen DISTINCT, fungsi menghilangkan semua nilai duplikat untuk ekspresi yang ditentukan sebelum menghitung hasilnya. Dengan argumen ALL, fungsi mempertahankan semua nilai duplikat. ALL adalah default. Untuk informasi selengkapnya, lihat Dukungan DISTINCT untuk agregasi bit-wise.
Contoh
Kueri berikut menerapkan fungsi BIT_OR ke kolom SUKA dalam tabel yang disebut USERLIKES dan mengelompokkan hasil menurut kolom CITY.
select city, bit_or(likes) from userlikes group by city
order by city;
city | bit_or
--------------+--------
Los Angeles | 127
Sacramento | 255
San Francisco | 255
San Jose | 255
Santa Barbara | 255
(5 rows)
Untuk empat kota yang terdaftar, semua jenis acara disukai oleh setidaknya satu pengguna (255=11111111
). Untuk Los Angeles, semua jenis acara kecuali olahraga disukai oleh setidaknya satu pengguna (127=01111111
).