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

Sådan bruges ora_hash på en kolonne med datatype xmltype

Som du allerede ved, ora_hash accepterer ikke long eller LOB-værdier. Du kan sende de første 4k eller 32k af XML-indholdet, men hvis du skal sikre dig, at hele XML-dokumentet ikke er ændret, vil det ikke være tilstrækkeligt. Og som Ben nævnte, ora_hash har et maksimum på 4294967295 skovle, så kollisioner er mere sandsynlige end med SHA-1 eller MD5. Som dokumentationen siger, ora_hash 'er nyttigt til operationer såsom at analysere en delmængde af data og generere en tilfældig stikprøve'.

Du kan bruge dbms_crypto pakke til at hash hele XMLType-værdien, som en CLOB udtrukket med getClobVal funktion, med en indpakningsfunktion for at gøre det nemmere at bruge:

create or replace function my_hash(xml xmltype) return raw is
begin
  return dbms_crypto.hash(src=>xml.getclobval(), typ=>dbms_crypto.hash_sh1);
end;
/

Du kan derefter indsætte din XMLType, som en værdi eller som en kolonne som en del af et udvalg:

select my_hash(xml) from t42;

MY_HASH(XML)                                 
---------------------------------------------
494C4E7688963BCF312B709B33CD1B5CCA7C0289     



  1. 12c Dataredigering

  2. ClassCastException:java.math.BigInteger kan ikke castes til java.lang.Long på forbindelse til MySQL

  3. Oracle SQL Developer og PostgreSQL

  4. Hvordan sletter man mysql-rækken efter tiden er gået?