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

Cách triển khai ora_hash (băm có thể gieo hạt chia bất kỳ loại dữ liệu sql nào thành n nhóm)

Tôi tin rằng bạn đang nói về một hàm băm hoàn hảo. Hàm ORA_HASH của Oracle không phải là một hàm băm hoàn hảo.

http://en.wikipedia.org/wiki/Perfect_hash_ Chức năng

Gần nhất bạn sẽ đạt được những gì bạn dường như muốn là một mảng liên kết. Oracle có những thứ đó. Hãy bắt đầu chơi với ví dụ này:

set serverout on size 10000
DECLARE
cursor foo 
is 
  select distinct fld1,fld2,fld9  from sometable;

type t is table of foo.%ROWTYPE
  index by varchar2;   -- change the index to an int if you want

myarray t; -- myarray is a table of records -- whatever foo returns

BEGIN
  for x in foo
  loop
      -- index using the first column of the fetched row  "fld1":
      myarray(x.fld1)=x;  -- assign the rowtype to the table of records.      
  end loop;

END;
/  

Lưu ý:một mảng kết hợp được xây dựng trên bảng băm, ví dụ trên sử dụng fld1 làm khóa băm. Đó là những gì khác biệt trong đó phải làm. Nó không bao giờ luôn được yêu cầu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyết định khi nào tạo Index trên cột của bảng trong cơ sở dữ liệu?

  2. PL / SQL:Lỗi PLS-00306:sai số hoặc loại đối số trong lệnh gọi được kích hoạt cho bảng số

  3. Nếu chúng ta có bộ ký tự US7ASCII tại sao nó cho phép chúng ta lưu trữ các ký tự không phải ascii?

  4. Lỗi nhà phát triển SQL với việc vô hiệu hóa các mô-đun và tiếp tục

  5. Trình tự Oracle cho trường khóa chính không truy xuất giá trị hiện được chèn trong Hibernate