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コードが異なります。