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

Tạo sha1-hash của một hàng trong Oracle

Gói DBMS_CRYPTO là gói chính xác để tạo băm. Nó không được cấp cho PUBLIC theo mặc định, bạn sẽ phải cấp nó cụ thể (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).

Kết quả của hàm này là kiểu dữ liệu RAW . Bạn có thể lưu trữ nó dưới dạng RAW hoặc chuyển đổi nó thành VARCHAR2 sử dụng RAWTOHEX hoặc UTL_ENCODE.BASE64_ENCODE các chức năng.

HASH hàm bị quá tải để chấp nhận ba kiểu dữ liệu làm đầu vào:RAW , CLOBBLOB . Do các quy tắc chuyển đổi ngầm định, nếu bạn sử dụng VARCHAR2 như đầu vào, Oracle sẽ cố gắng chuyển đổi nó thành RAW và rất có thể sẽ không thành công vì chuyển đổi này chỉ hoạt động với các chuỗi thập lục phân.

Nếu bạn sử dụng VARCHAR2 sau đó, bạn cần chuyển đổi đầu vào thành kiểu dữ liệu nhị phân hoặc CLOB , ví dụ:

DECLARE
   x RAW(20);
BEGIN
   SELECT sys.dbms_crypto.hash(utl_raw.cast_to_raw(col1||col2||to_char(col3)), 
                               sys.dbms_crypto.hash_sh1) 
     INTO x 
     FROM t;
END;

bạn sẽ tìm thấy thông tin bổ sung trong tài liệu của DBMS_CRYPTO.hash



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oci_bind_by_name và to_date PHP / OCI / Oracle

  2. ORA-12170:TNS:Đã xảy ra thời gian chờ kết nối

  3. ORA-27154 / ORA-27146

  4. Oracle PL / SQL Collections - Thêm các phần tử vào một bảng hiện có

  5. Sử dụng hàm Max () để chọn giá trị nhóm