265 UTL_MATCH
UTL_MATCH
パッケージによって、2つのレコードを簡単に照合できるようになります。通常、このパッケージは、2つの姓、2つの名などの名前を照合する場合に使用されます。
この章のトピックは、次のとおりです:
265.1 UTL_MATCHの概要
UTL_MATCH
は、照合の決定時に編集距離アルゴリズムまたはJaro-Winklerアルゴリズムを使用できます。
編集距離は、レーベンシュタイン距離(1965年にこのアルゴリズムを考案したロシアの科学者Vladimir Levenshteinにちなんだ呼称)とも呼ばれ、2つの文字列s1
とs2
の類似度を示す値です。距離は、s1をs2に変換するために必要となる挿入、削除または置換の回数のことです。
shackleford
とshackelford
の間の編集距離は2です。
2つの文字列の編集距離を計算する別の方法には、「Jaro-Winklerアルゴリズム」があります。これは米国勢調査局で開発された方法で、2つの文字列の部分的な類似度を数値化する、文字列コンパレータによる測定法です。文字列コンパレータでは、文字列長が示され、英数字文字列内の一般的な人為的エラーが部分的に示されます。
次の表に、Jaro-Winklerアルゴリズムおよび編集距離アルゴリズムによって戻される類似度の値を示します。
表265-1 Jaro-Winklerアルゴリズムおよび編集距離アルゴリズムによって戻される、正規化された値の比較
文字列1 | 文字列2 | Jaro Winkler | 編集距離 |
---|---|---|---|
Dunningham |
Cunnigham |
89 |
80 |
Abroms |
Abrams |
92 |
83 |
Lampley |
Campley |
90 |
86 |
Marhta |
Martha |
96 |
67 |
Jonathon |
Jonathan |
95 |
88 |
Jeraldine |
Geraldine |
92 |
89 |
265.2 UTL_MATCHのセキュリティ・モデル
UTL_MATCH
パッケージは、定義者の権限で実行されます。UTL_MATCH
パッケージは、SYS
の下に作成する必要があります。このパッケージで操作を実行するには、SYS
権限が必要です。
265.3 UTL_MATCHサブプログラムの要約
この表は、UTL_MATCH
サブプログラムを示し、簡単に説明しています。
表265-2 UTL_MATCHパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
string-1をstring-2に変換するために必要となる変更の回数を計算します。 |
|
string-1をstring-2に変換するために必要となる変更の回数を計算し、0(一致なし)から100(完全一致)の範囲で値を戻します。 |
|
string-1とstring-2の一致度を計算します。 |
|
string-1とstring-2の一致度を、0(一致なし)から100(完全一致)の範囲で計算します。 |
265.3.1 EDIT_DISTANCEファンクション
このファンクションは、string-1をstring-2に変換するために必要となる挿入、削除または置換の回数を計算します。
構文
UTL_MATCH.EDIT_DISTANCE ( s1 IN VARCHAR2, s2 IN VARCHAR2) RETURN PLS_INTEGER;
パラメータ
表265-3 EDIT_DISTANCEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
変換する文字列。 |
|
|
例
SELECT UTL_MATCH.EDIT_DISTANCE('shackleford', 'shackelford') FROM DUAL; ------------- returns 2
265.3.2 EDIT_DISTANCE_SIMILARITYファンクション
このファンクションは、string-1をstring-2に変換するために必要となる挿入、削除または置換の回数を計算し、2つの文字列の編集距離を正規化された値で戻します。
通常、値は0 (一致なし)から100 (完全一致)の範囲となります。
構文
UTL_MATCH.EDIT_DISTANCE_SIMILARITY ( s1 IN VARCHAR2, s2 IN VARCHAR2) RETURN PLS_INTEGER;
パラメータ
表265-4 EDIT_DISTANCE_SIMILARITYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
変換する文字列。 |
|
|
例
SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('shackleford', 'shackelford') FROM DUAL; -------------- returns 82
265.3.3 JARO_WINKLERファンクション
このファンクションは、2つの文字列の一致度を計算します。
構文
UTL_MATCH.JARO_WINKLER ( s1 IN VARCHAR2, s2 IN VARCHAR2) RETURN BINARY_DOUBLE;
パラメータ
表265-5 JARO_WINKLERファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
入力。 |
|
入力。 |
例
SELECT UTL_MATCH.JARO_WINKLER('shackleford', 'shackelford') FROM DUAL; -------------- returns 9.818E-001
265.3.4 JARO_WINKLER_SIMILARITYファンクション
このファンクションは、2つの文字列の一致度を計算し、0 (一致なし)から100 (完全一致)の範囲で値を戻します。
構文
UTL_MATCH.JARO_WINKLER_SIMILARITY ( s1 IN VARCHAR2, s2 IN VARCHAR2) RETURN PLS_INTEGER;
パラメータ
表265-6 JARO_WINKLER_SIMILARITYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
入力。 |
|
入力。 |
例
SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('shackleford', 'shackelford') FROM DUAL; -------------- returns 98