SOUNDEX

SOUNDEX関数は、文字列の音声シグネチャを判別し、発音が類似した文字列の比較を可能にします。SOUNDEXを使用すると、綴りが異なっても発音が類似した英単語を比較できます。

SQL構文

SOUNDEX (InputString)

パラメータ

SOUNDEXには、次のパラメータがあります。

パラメータ 説明

InputString

有効な値は、ORAおよびTTバリアントの付いたCHARVARCHAR2NCHARおよびNVARCHAR2CLOBおよびNCLOBです。データ型がCLOBまたはNCLOBの場合、TimesTenは結果を戻す前に暗黙的な変換を実行します。

説明

  • 英数字の文字列を、文字列の最初の文字で始まり3つの数字が続く4文字のコードに変換します。

  • 音声表現については、『The Art of Computer Programming, Volume 3: Sorting and Searching』(Donald E. Knuth著)で次のように定義されています:

    1. 文字列の最初の文字を残し、A、E、I、O、Uの文字が出てきた場合にはすべて削除します。文字の処理で大文字と小文字は区別されません。

    2. H、WおよびYが出てきた場合には、すべて削除します。

    3. 残った2文字目以降の文字に対し、次のように数値を割り当てます。

      B, F, P, V = 1
      C, G, J, K, Q, S, X, Z = 2
      D, T = 3
      L = 4
      M, N = 5
      R = 6
      
    4. 2つ以上の同じ数字を含む文字が元の名前内(ステップ1実行前の名前)で隣接している場合は、数字を1つ残してすべて削除します。

    5. 結果の最初の4文字を戻します(結果が4文字より少ない場合は'0'を埋め込みます)。

  • InputStringに対してsoundexコードを作成できない場合、この関数はNULLを戻します。たとえば、InputStringに英字が含まれていない場合は、NULLが戻されます。

  • 入力型と出力型のマッピング:

    入力型 出力型

    VARCHAR2(x)、CHARCLOB

    VARCHAR2(4)

    TT_CHAR(x)、TT_VARCHAR(x)

    TT_VARCHAR(4)

    NVARCHAR2(x)、NCHAR(x)、NCLOB

    NVARCHAR2(4)

    TT_NCHAR(x)、TT_NVARCHAR(x)

    TT_NVARCHAR(4)

SOUNDEX関数を使用して、姓が'Taylor'である従業員の音声シグネチャを戻します。

Command> SELECT last_name, first_name, SOUNDEX (last_name)
         FROM employees where last_name = 'Taylor';
< Taylor, Jonathon, T460 >
< Taylor, Winston, T460 >
2 rows found.

この関数を再度呼び出して、文字列'Tailor'の音声シグネチャを戻します。この関数の3回目の呼出しを行い、姓の音声が文字列'Tailor'に類似した各従業員の姓名を戻します。

Command> SELECT SOUNDEX ('Tailor') FROM dual;
< T460 >
1 row found.

Command> SELECT last_name, first_name FROM employees WHERE SOUNDEX (last_name) = 
           SOUNDEX ('Tailor');
< Taylor, Jonathon >
< Taylor, Winston >
2 rows found.