sql >> Database >  >> RDS >> Oracle

Hoe ora_hash te gebruiken op een kolom van datatype xmltype

Zoals je al weet, ora_hash accepteert niet long of LOB-waarden. U kunt de eerste 4k of 32k van de XML-inhoud doorgeven, maar als u ervoor moet zorgen dat het hele XML-document niet is gewijzigd, is dat niet voldoende. En zoals Ben al zei, ora_hash heeft een maximum van 4294967295 buckets, dus botsingen zijn eerder waarschijnlijk dan bij SHA-1 of MD5. Zoals de documentatie zegt, ora_hash 'is handig voor bewerkingen zoals het analyseren van een subset van gegevens en het genereren van een willekeurige steekproef'.

U kunt de dbms_crypto . gebruiken pakket om de hele XMLType-waarde te hashen, als een CLOB geëxtraheerd met de getClobVal functie, met een wrapper-functie om het gebruik eenvoudiger te maken:

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;
/

U kunt dan uw XMLType doorgeven, als waarde of als kolom als onderdeel van een select:

select my_hash(xml) from t42;

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



  1. Hoe lees ik de inhoud van een .sql-bestand in een R-script om een ​​query uit te voeren?

  2. Oracle-client en netwerkcomponenten zijn niet gevonden

  3. SQLite COUNT

  4. Is het een slecht ontwerp om arrays in een database te gebruiken?