268 UTL_MATCH

UTL_MATCHパッケージによって、2つのレコードを簡単に照合できるようになります。通常、このパッケージは、2つの姓、2つの名などの名前を照合する場合に使用されます。

この章のトピックは、次のとおりです:

268.1 UTL_MATCHの概要

UTL_MATCHは、照合の決定時に編集距離アルゴリズムまたはJaro-Winklerアルゴリズムを使用できます。

編集距離は、レーベンシュタイン距離(1965年にこのアルゴリズムを考案したロシアの科学者Vladimir Levenshteinにちなんだ呼称)とも呼ばれ、2つの文字列s1s2の類似度を示す値です。距離は、s1をs2に変換するために必要となる挿入、削除または置換の回数のことです。

shacklefordshackelfordの間の編集距離は2です。

2つの文字列の編集距離を計算する別の方法には、「Jaro-Winklerアルゴリズム」があります。これは米国勢調査局で開発された方法で、2つの文字列の部分的な類似度を数値化する、文字列コンパレータによる測定法です。文字列コンパレータでは、文字列長が示され、英数字文字列内の一般的な人為的エラーが部分的に示されます。

次の表に、Jaro-Winklerアルゴリズムおよび編集距離アルゴリズムによって戻される類似度の値を示します。

表268-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

268.2 UTL_MATCHのセキュリティ・モデル

UTL_MATCHパッケージは、定義者の権限で実行されます。UTL_MATCHパッケージは、SYSの下に作成する必要があります。このパッケージで操作を実行するには、SYS権限が必要です。

268.3 UTL_MATCHサブプログラムの要約

この表は、UTL_MATCHサブプログラムを示し、簡単に説明しています。

表268-2 UTL_MATCHパッケージのサブプログラム

サブプログラム 説明

EDIT_DISTANCEファンクション

string-1をstring-2に変換するために必要となる変更の回数を計算します。

EDIT_DISTANCE_SIMILARITYファンクション

string-1をstring-2に変換するために必要となる変更の回数を計算し、0(一致なし)から100(完全一致)の範囲で値を戻します。

JARO_WINKLERファンクション

string-1とstring-2の一致度を計算します。

JARO_WINKLER_SIMILARITYファンクション

string-1とstring-2の一致度を、0(一致なし)から100(完全一致)の範囲で計算します。

268.3.1 EDIT_DISTANCEファンクション

このファンクションは、string-1をstring-2に変換するために必要となる挿入、削除または置換の回数を計算します。

構文

UTL_MATCH.EDIT_DISTANCE (
   s1  IN  VARCHAR2, 
   s2  IN  VARCHAR2) 
 RETURN PLS_INTEGER;

パラメータ

表268-3 EDIT_DISTANCEファンクションのパラメータ

パラメータ 説明

s1

変換する文字列。

s2

s1の変換後の文字列。

SELECT UTL_MATCH.EDIT_DISTANCE('shackleford', 'shackelford') FROM DUAL;  
-------------
returns 2 

268.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;

パラメータ

表268-4 EDIT_DISTANCE_SIMILARITYファンクションのパラメータ

パラメータ 説明

s1

変換する文字列。

s2

s1の変換後の文字列。

SELECT UTL_MATCH.EDIT_DISTANCE_SIMILARITY('shackleford', 'shackelford') FROM DUAL;
--------------
returns 82

268.3.3 JARO_WINKLERファンクション

このファンクションは、2つの文字列の一致度を計算します。

構文

UTL_MATCH.JARO_WINKLER (
   s1  IN  VARCHAR2, 
   s2  IN  VARCHAR2) 
 RETURN BINARY_DOUBLE;

パラメータ

表268-5 JARO_WINKLERファンクションのパラメータ

パラメータ 説明

s1

入力。

s2

入力。

SELECT UTL_MATCH.JARO_WINKLER('shackleford', 'shackelford') FROM DUAL;
--------------
returns 9.818E-001

268.3.4 JARO_WINKLER_SIMILARITYファンクション

このファンクションは、2つの文字列の一致度を計算し、0 (一致なし)から100 (完全一致)の範囲で値を戻します。

構文

UTL_MATCH.JARO_WINKLER_SIMILARITY (
   s1  IN  VARCHAR2, 
   s2  IN  VARCHAR2) 
 RETURN PLS_INTEGER;

パラメータ

表268-6 JARO_WINKLER_SIMILARITYファンクションのパラメータ

パラメータ 説明

s1

入力。

s2

入力。

SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('shackleford', 'shackelford') FROM DUAL;
--------------
returns 98