PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Operator Bitwise PostgreSQL dengan variasi bit tidak dapat DAN string bit dengan ukuran berbeda

Perilaku bit PostgreSQL dan bit varying Types sangat tidak membantu, dengan cara ia menolak untuk memperluas bitfield untuk operasi, dan memperluasnya ke kanan untuk gips alih-alih memperpanjangnya ke kiri.

Masuk akal jika Pg memperpanjang operan yang lebih kecil ke kiri dengan nol sebelum operasi AND atau OR, daripada gagal.

Anda tidak dapat menggunakan pemeran untuk bit(n) untuk mendapatkan panjang yang sama, karena untuk beberapa alasan gila dilemparkan ke bit(n) kanan-pad argumen, membuatnya tidak berguna di hampir semua situasi.

Anda dapat menggunakan sesuatu seperti lpad($1::text, greatest(length($1), length($2)),'0')::bit varying ke kiri-memperpanjang bidang bit dengan nol ke yang lebih besar dari dua panjang. Ini rumit, tapi itu akan berhasil. Saya akan merekomendasikan menulis fungsi pembungkus untuk menampung kekacauan.

Sebagai alternatif, pertimbangkan untuk memodifikasi bit kode dukungan di src/backend/utils/adt/varbit.c untuk menambahkan fungsi ke bidang bit perpanjangan kiri dan potong kiri, dan fungsi untuk melakukan perbandingan ekstensi kiri. Seharusnya cukup mudah berdasarkan kode yang ada.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Iterasi lebih dari integer[] di PL/pgSQL

  2. ST_DDalam terkadang tidak menggunakan indeks

  3. Bagaimana menemukan semua fungsi yang ditentukan pengguna (tidak terkait ekstensi)?

  4. Server pgAdmin 4 tidak dapat dihubungi:Kesalahan fatal

  5. Bagaimana cara melakukan pembaruan + bergabung di PostgreSQL?