sql >> Database teknologi >  >> RDS >> Oracle

Lav en sha1-hash af en række i Oracle

Pakken DBMS_CRYPTO er den korrekte pakke til at generere hashes. Det er ikke givet til PUBLIC som standard, du bliver nødt til at give det specifikt (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).

Resultatet af denne funktion er af datatypen RAW . Du kan gemme det i en RAW kolonne eller konverter den til VARCHAR2 ved hjælp af RAWTOHEX eller UTL_ENCODE.BASE64_ENCODE funktioner.

HASH Funktionen er overbelastet til at acceptere tre datatyper som input:RAW , CLOB og BLOB . På grund af reglerne for implicit konvertering, hvis du bruger en VARCHAR2 som input, vil Oracle forsøge at konvertere det til RAW og vil højst sandsynligt mislykkes, da denne konvertering kun virker med hexadecimale strenge.

Hvis du bruger VARCHAR2 derefter skal du konvertere input til en binær datatype eller en CLOB , for eksempel :

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;

du vil finde yderligere information i dokumentationen til DBMS_CRYPTO.hash



  1. Genbruger du SqlCommand?

  2. Sådan konfigureres MariaDB 10.3-replikering ved hjælp af Ansible og Vagrant

  3. datetime til totalminute i sql

  4. Servering af lækker mad (og data) – en datamodel for restauranter