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』で次のように定義されています。
-
文字列の最初の文字を残し、a、e、h、i、o、u、w、yの文字が出てきた場合にはすべて削除します。
-
残った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
-
元の名前(最初のステップを行う前)で、同じ数値を持つ2つ以上の文字が並んでいるか、または挟まれているhとwを除外すると同じ数値を持つ2つ以上の文字が並んでしまう場合は、最初の文字を残してそれ以外の並んでいる同じ数値の文字をすべて削除します。
-
最初の4バイトを0(ゼロ)で埋めて戻します。
charは、CHAR、VARCHAR2、NCHARまたはNVARCHAR2データ型です。戻り値は、charと同じデータ型です。
このファンクションは、CLOBデータを直接的にサポートしていません。ただし、暗黙的なデータ変換を使用してCLOBを引数として渡すことはできます。
関連項目:
-
詳細は、「データ型の比較規則」を参照してください。
-
SOUNDEXの文字の戻り値に割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、「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