PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

PostgreSQL Các toán tử bitwise với bit thay đổi không thể VÀ các chuỗi bit có kích thước khác nhau

Hành vi của bit của PostgreSQL và bit varying các kiểu cực kỳ vô ích, với cách nó từ chối mở rộng trường bit cho các hoạt động và nó mở rộng chúng sang phải cho các phôi thay vì mở rộng chúng sang trái.

Pg sẽ có ý nghĩa nếu mở rộng sang trái toán hạng nhỏ hơn với các số 0 trước một phép toán AND hoặc OR, thay vì không thành công.

Bạn không thể sử dụng truyền đến bit(n) để có cùng độ dài, vì vì một lý do điên rồ nào đó mà truyền thành bit(n) miếng đệm bên phải lập luận, khiến nó trở nên vô dụng trong hầu hết mọi tình huống.

Bạn có thể sử dụng một cái gì đó như lpad($1::text, greatest(length($1), length($2)),'0')::bit varying mở rộng sang trái một trường bit có số 0 đến lớn hơn hai độ dài. Nó cồng kềnh, nhưng nó sẽ hoạt động. Tôi khuyên bạn nên viết các hàm trình bao bọc để chứa mớ hỗn độn.

Ngoài ra, hãy xem xét sửa đổi bit mã hỗ trợ trong src/backend/utils/adt/varbit.c để thêm các chức năng vào các trường bit mở rộng sang trái và cắt bớt bên trái và các chức năng để thực hiện so sánh mở rộng sang trái. Nó sẽ khá dễ dàng dựa trên mã hiện có.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm các bản ghi duy nhất, được sắp xếp theo trường liên quan, với PostgreSQL và Rails 3?

  2. Làm thế nào để sử dụng case-when trong Ecto Queries trong elixir?

  3. tính toán tổng các giá trị được liên kết với các phạm vi ngày trùng lặp

  4. Có thể xây dựng lại pg_depend không?

  5. Pandas - write_frame to sqlite - datetime64 [ns]