Soundexは、英語で発音されるように、音で名前にインデックスを付けるための音声アルゴリズムです。 1918年と1922年に開発され、特許を取得しました。
SQL Serverで使用できる関数の1つは、SOUNDEX()
です。 関数。指定された文字列のSoundexコードを返します。
構文
構文は次のようになります:
SOUNDEX ( character_expression )
character_expression
の場所 Soundexコードが必要な単語または文字列です。これは、定数、変数、または列にすることができます。
SOUNDEX()
関数は照合に敏感であり、文字列関数はネストできます。
Soundexコード
前述のように、SOUNDEX()
関数は、指定された文字列のSoundexコードを返します。 Soundexコードは、話されたときに文字列がどのように聞こえるかに基づく4文字のコードです。 Soundexコードの例を次に示します。
S600
Soundexコードの作成方法は次のとおりです。
- コードの最初の文字は、大文字に変換された文字列の最初の文字です。したがって、上記の例では、文字列が文字S(小文字または大文字)で始まることがわかります。
- コードの2番目から4番目の文字は、式の文字を表す数字です。
- 文字A、E、I、O、U、H、W、およびYは、文字列の最初の文字でない限り無視されます。
- 4文字のコードを生成するために、必要に応じて最後にゼロが追加されます。
例
文字列からSoundex文字列を取得する例を次に示します。
SELECT SOUNDEX('Sure');
結果:
S600
つまり、Sure
という単語であることがわかります。 S600
のSoundexコードがあります 。
一致する2つの単語の例
2つの単語が同じSoundexコードを共有する例を次に示します(同じように聞こえるため):
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
結果:
Sure Shore ---- ----- S600 S600
より正確な一致の例を次に示します。
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
結果:
Dam Damn Too Two ---- ---- ---- ---- D500 D500 T000 T000
一致しない単語の例
これは、2つの単語が同じように聞こえないため、Soundexコードが異なる例です。
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
結果:
Water Coffee ----- ------ W360 C100
つづりの異なる単語
一部の単語は、出身国によってスペルが異なります。そのような単語は同じSoundexコードを共有します:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
結果:
Flavor Flavour ------ ------- F416 F416
同じサウンド、異なるSoundexコード
2つの単語が同じように聞こえても、Soundexコードが異なる場合があります。これの最も一般的な理由は、それらが別の文字で始まることです(1つは黙字を使用します)。前述のように、Soundexコードは、文字列の最初の文字(大文字に変換)で始まります。したがって、まったく同じ発音の2つの単語があり、それらが異なる文字で始まる場合、それらは異なるSoundexコードを持ちます。
次にいくつかの例を示します。
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
結果:
Hole Whole Our Hour ---- ----- ---- ---- H400 W400 O600 H600
この例のペアは、最初の文字が異なるという理由だけで、Soundexコードが異なります。