ORA_HASH
構文
目的
ORA_HASHファンクションは、指定された式のハッシュ値を計算します。このファンクションは、データのサブセットの分析や、ランダムな標本の生成などの操作に有効です。 
                  
- 
                        
expr引数には、Oracle Databaseでハッシュ値を計算するデータを指定します。exprに指定できるデータの長さに制限はありません。このデータは通常、列名です。exprは、LONG型またはLOB型にすることはできません。また、ネストした表型でない場合は、ユーザー定義オブジェクト型にすることはできません。ネストした表型のハッシュ値は、コレクション内の要素の順序に依存しません。その他のデータ型はすべて、exprでサポートされています。 - 
                        
オプションの
max_bucket引数には、ハッシュ・ファンクションから戻される最大バケット値を指定します。0(ゼロ)から4294967295の任意の値を指定できます。デフォルト値は4294967295です。 - 
                        
オプションの
seed_value引数を指定すると、同じデータ・セットに対して様々な結果を生成できます。Oracleは、ハッシュ・ファンクションをexprとseed_valueの組合せに適用します。0(ゼロ)から4294967295の任意の値を指定できます。デフォルト値は0です。 
戻り値はNUMBERです。
                  
例
次の例では、sh.sales表内の顧客IDと製品IDの各組合せに対してハッシュ値を作成し、そのハッシュ値を最大100個のバケットに分割して、最初のバケット(バケット0(ゼロ))でamount_sold値の合計を戻します。3つ目の引数(5)には、ハッシュ・ファンクションのシード値を指定しています。このシード値を変更すると、同じ問合せで異なるハッシュ結果を得ることができます。
                  
SELECT SUM(amount_sold)
  FROM sales
  WHERE ORA_HASH(CONCAT(cust_id, prod_id), 99, 5) = 0;
SUM(AMOUNT_SOLD)
----------------
       989431.14