sql >> データベース >  >> RDS >> Oracle

データ型xmltypeの列でora_hashを使用する方法

    ご存知のとおり、ora_hash longを受け入れません またはLOB値。 XMLコンテンツの最初の4kまたは32kを渡すこともできますが、XMLドキュメント全体が変更されていないことを確認する必要がある場合は、それだけでは不十分です。そしてベンが述べたように、ora_hash 最大4294967295バケットがあるため、SHA-1またはMD5よりも衝突が発生する可能性が高くなります。ドキュメントに記載されているように、ora_hash 'データのサブセットの分析やランダムサンプルの生成などの操作に役立ちます'。

    dbms_cryptoを使用できます getClobValで抽出されたCLOBとして、XMLType値全体をハッシュするパッケージ 関数、使いやすくするためのラッパー関数付き:

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

    次に、XMLTypeを値として、またはselectの一部として列として渡すことができます:

    select my_hash(xml) from t42;
    
    MY_HASH(XML)                                 
    ---------------------------------------------
    494C4E7688963BCF312B709B33CD1B5CCA7C0289     
    



    1. PostgreSQLのMIN()関数

    2. 3SQLクエリのパフォーマンスを遅らせる厄介なI/O統計

    3. SQL Server 2008 Spatial:ポリゴン内のポイントを検索します

    4. SQLiteのインストール