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

ora_hash(任意のSQLデータ型をn個のバケットに分割するシード可能なハッシュ)を実装する方法

    あなたは完璧なハッシュ関数について話していると思います。 OracleのORA_HASH関数は完全なハッシュ関数ではありません。

    http://en.wikipedia.org/wiki/Perfect_hash_function

    必要と思われるものにできるだけ近いのは、連想配列です。オラクルにはそれらがあります。この例で遊んでください:

    set serverout on size 10000
    DECLARE
    cursor foo 
    is 
      select distinct fld1,fld2,fld9  from sometable;
    
    type t is table of foo.%ROWTYPE
      index by varchar2;   -- change the index to an int if you want
    
    myarray t; -- myarray is a table of records -- whatever foo returns
    
    BEGIN
      for x in foo
      loop
          -- index using the first column of the fetched row  "fld1":
          myarray(x.fld1)=x;  -- assign the rowtype to the table of records.      
      end loop;
    
    END;
    /  
    

    注:連想配列はハッシュテーブル上に構築され、上記の例ではハッシュキーとしてfld1を使用します。したがって、上記は、説明したとおり、完全なハッシュであり、fld1が一意のフィールドである場合にのみ機能します。それが、そこにある明確なことです。常に必要になることはありません。




    1. エラー:エラー1005:テーブルを作成できません(errno:121)

    2. IISのPHP5.3WindowsにPGSQLがロードされていない

    3. MySQLデータベース内のすべてのテーブルのレコード数を取得します

    4. (1つのテーブル)行を挿入