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

MariaDBでのサウンドの仕組み

    MariaDBでは、SOUNDS LIKEを使用できます 似たような単語に一致するクエリで。

    構文

    構文は次のようになります:

    expr1 SOUNDS LIKE expr2

    これを行うのと同じです:SOUNDEX(expr1) = SOUNDEX(expr2)

    Soundexは、英語で発音されるように、音で名前にインデックスを付けるための音声アルゴリズムです。 2つの単語が同じように聞こえる場合は、同じSoundex文字列を使用する必要があります。 2つの単語が似ているように聞こえるが、まったく同じではない場合、それらのSoundex文字列は似ているように見えますが、まったく同じではない可能性があります。

    基本的な例は次のとおりです。

    SELECT 'Two' SOUNDS LIKE 'Too';

    結果:

    +-------------------------+
    | 'Two' SOUNDS LIKE 'Too' |
    +-------------------------+
    |                       1 |
    +-------------------------+

    この場合、2つの単語は同じように聞こえます。

    SOUNDEX()を使用できます 各単語のSoundex文字列を返す関数:

    SELECT 
        SOUNDEX('Two'),
        SOUNDEX('Too');

    結果:

    +----------------+----------------+
    | SOUNDEX('Two') | SOUNDEX('Too') |
    +----------------+----------------+
    | T000           | T000           |
    +----------------+----------------+

    Soundexの文字列は同じです。これがSOUNDS LIKEの理由です 返された1

    一致なし

    同じように聞こえない2つの単語の例を次に示します。

    SELECT 'Cat' SOUNDS LIKE 'Dog';

    結果:

    +-------------------------+
    | 'Cat' SOUNDS LIKE 'Dog' |
    +-------------------------+
    |                       0 |
    +-------------------------+

    この場合、0を取得しました 、言葉が同じように聞こえないからです。おそらく、それらのSoundex文字列は異なります。調べてみましょう:

    SELECT 
        SOUNDEX('Cat'),
        SOUNDEX('Dog');

    結果:

    +----------------+----------------+
    | SOUNDEX('Cat') | SOUNDEX('Dog') |
    +----------------+----------------+
    | C300           | D200           |
    +----------------+----------------+

    うん。さまざまなSoundex文字列。

    データベースの例

    SOUNDS LIKEの使用例を次に示します。 WHEREで データベースクエリの句:

    SELECT 
        PetName, 
        SOUNDEX(PetName),
        SOUNDEX('Wagg')
    FROM Pets
    WHERE PetName SOUNDS LIKE 'Wagg';

    結果:

    +---------+------------------+-----------------+
    | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
    +---------+------------------+-----------------+
    | Wag     | W200             | W200            |
    +---------+------------------+-----------------+

    ここでは、SOUNDEX()を使用しています 同じことをする関数:

    SELECT 
        PetName, 
        SOUNDEX(PetName),
        SOUNDEX('Wagg')
    FROM Pets
    WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');

    結果:

    +---------+------------------+-----------------+
    | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
    +---------+------------------+-----------------+
    | Wag     | W200             | W200            |
    +---------+------------------+-----------------+

    1. SQL:結果の行を複数回繰り返し、行に番号を付けます

    2. 管理および監視用のOracleDatabase用の27個のoracledbaスクリプト

    3. SQL UPDATE構文–DBMSによってリストされます

    4. pgmemcacheのセットアップと使用法