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

Oracleは、select句で定義されたデータチャンクのチェックサム値を取得します

    DBMS_SQLHASH.GETHASHを使用できます このため。クエリ結果は順序付けする必要があり、LOBを含めることはできません。そうしないと、結果が決定論的ではなくなります。

    select dbms_sqlhash.gethash(q'[select * from some_table order by 1,2]', digest_type => 1)
    from dual;
    

    ここで、digest_type 1 =HASH_MD4、2 =HASH_MD5、3=HASH_SH1。

    そのパッケージは、デフォルトでは誰にも付与されません。これを使用するには、SYSとしてログオンしてこれを実行する人が必要です:

    SQL> grant execute on dbms_sqlhash to <your_user>;
    

    「バグ17082212:異なるアクセスパスからのDBMS_SQLHASH異なる結果」で説明されているように、クエリ結果を並べ替える必要があります。

    LOBが機能しない理由はわかりませんが、関数ORA_HASHの方法に関連している可能性があります。 LOBではうまく機能しません。このジョナサンルイスの記事には、ORA_HASHの例がいくつか含まれています。 同じLOBデータに対して異なる結果を返します。また、SQL言語リファレンスの最近のバージョンでは、ORA_HASH LOBをサポートしていません。




    1. Oracleは例外を除いてディレクトリからファイルを読み取りました

    2. MySQLで列のデータ型を確認する4つの方法

    3. ステートメントを選択して、特定のフィールドの重複を検索します

    4. 複数の行を1つの列にカンマで区切ることはできますか?