sql >> データベース >  >> RDS >> Sqlserver

SQL ServerのSOUNDEX()関数のしくみ

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


    1. Oracleデータベースで連想配列を作成する方法

    2. OracleDatabaseでパラメータなしでPL/SQLストアドプロシージャを作成する方法

    3. INNERJOIN以外の結合を使用した3つのテーブル結合

    4. MySQLにBLOBおよびCLOBファイルを挿入する方法は?