SOUNDEX
SOUNDEX関数は、文字列の音声シグネチャを判別し、発音が類似した文字列の比較を可能にします。SOUNDEXを使用すると、綴りが異なっても発音が類似した英単語を比較できます。
SQL構文
SOUNDEX (InputString)パラメータ
SOUNDEXには、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
有効な値は、ORAおよびTTバリアントの付いた |
説明
-
英数字の文字列を、文字列の最初の文字で始まり3つの数字が続く4文字のコードに変換します。
-
音声表現については、『The Art of Computer Programming, Volume 3: Sorting and Searching』(Donald E. Knuth著)で次のように定義されています:
-
文字列の最初の文字を残し、A、E、I、O、Uの文字が出てきた場合にはすべて削除します。文字の処理で大文字と小文字は区別されません。
-
H、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つ以上の同じ数字を含む文字が元の名前内(ステップ1実行前の名前)で隣接している場合は、数字を1つ残してすべて削除します。
-
結果の最初の4文字を戻します(結果が4文字より少ない場合は'0'を埋め込みます)。
-
-
InputStringに対してsoundexコードを作成できない場合、この関数はNULLを戻します。たとえば、InputStringに英字が含まれていない場合は、NULLが戻されます。 -
入力型と出力型のマッピング:
入力型 出力型 VARCHAR2(x)、CHAR、CLOBVARCHAR2(4)TT_CHAR(x)、TT_VARCHAR(x)TT_VARCHAR(4)NVARCHAR2(x)、NCHAR(x)、NCLOBNVARCHAR2(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.