日本語PDF

SOUNDEX

構文

目的

SOUNDEXは、charと同じ音声表現を持つ文字列を戻します。このファンクションによって、綴りが異なっても発音が類似した英単語を比較できます。

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

  1. 文字列の最初の文字を残し、a、e、h、i、o、u、w、yの文字が出てきた場合にはすべて削除します。

  2. 残った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
    
  3. 元の名前(最初のステップを行う前)で、同じ数値を持つ2つ以上の文字が並んでいるか、または挟まれているhとwを除外すると同じ数値を持つ2つ以上の文字が並んでしまう場合は、最初の文字を残してそれ以外の並んでいる同じ数値の文字をすべて削除します。

  4. 最初の4バイトを0(ゼロ)で埋めて戻します。

charは、CHARVARCHAR2NCHARまたはNVARCHAR2データ型です。戻り値は、charと同じデータ型です。

このファンクションは、CLOBデータを直接的にサポートしていません。ただし、暗黙的なデータ変換を使用してCLOBを引数として渡すことはできます。

関連項目:

次の例では、「Smyth」と同じ音声表現を持つ従業員を戻します。

SELECT last_name, first_name
     FROM hr.employees
     WHERE SOUNDEX(last_name)
         = SOUNDEX('SMYTHE')
     ORDER BY last_name, first_name;

LAST_NAME  FIRST_NAME
---------- ----------
Smith      Lindsey
Smith      William