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

MySQL SOUNDEX()の例

    多くのMySQL文字列関数の1つは、SOUNDEX()です。 働き。この関数は、指定された文字列からSoundex文字列を返します。 2つの単語が同じように聞こえる場合は、同じSoundex文字列を使用する必要があります。 2つの単語が似ているように聞こえるが、まったく同じではない場合、それらのSoundex文字列は似ているように見えますが、まったく同じではない可能性があります。

    この記事には、SOUNDEX()がどのように機能するかを示すSoundexの例が多数含まれています。 関数はMySQLで機能します。

    構文

    まず、構文を見てみましょう:

    SOUNDEX(str)

    str Soundex文字列が必要な文字列です。

    文字列からSoundex文字列を取得する例を次に示します。

    SELECT SOUNDEX('Sure');

    結果:

    +-----------------+
    | SOUNDEX('Sure') |
    +-----------------+
    | S600            |
    +-----------------+

    したがって、この場合、単語Sure S600のSoundex文字列があります 。

    例–完全一致

    これは、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文字列はこれら2つの単語で完全に異なります。

    例–さまざまなスペル

    スペルが異なる2つの単語の例を次に示します(出身国によって異なります):

    SELECT 
      SOUNDEX('Color') AS 'Color',
      SOUNDEX('Colour') AS 'Colour';

    結果:

    +-------+--------+
    | Color | Colour |
    +-------+--------+
    | C460  | C460   |
    +-------+--------+

    したがって、そのような単語は同じSoundex文字列を共有することがわかります(同じように発音されている限り)。

    例–同じサウンド、異なるSoundex

    単語は同じように聞こえますが、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文字列を持っています。

    例–データベースクエリのSoundex

    SOUNDEX()の使用例を次に示します。 データベースクエリで。この場合、「Ay SeeDeeCi」のように聞こえるレコードを探しています:

    SELECT ArtistName 
    FROM Artists
    WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');

    結果:

    +------------+
    | ArtistName |
    +------------+
    | AC/DC      |
    +------------+

    つまり、AC/DC どうやらAy See Dee Ciと同じSoundexコードを持っているようです (少なくともMySQLを使用している場合)念のため、これら両方の文字列のSoundexコードを次に示します。

    SELECT 
      SOUNDEX('AC/DC') AS 'AC/DC',
      SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';

    結果:

    +-------+---------------+
    | AC/DC | Ay See Dee Ci |
    +-------+---------------+
    | A232  | A232          |
    +-------+---------------+

    代替案:サウンドライク

    SOUNDS LIKEを使用して代替クエリを作成することもできます。 SOUNDEX()の代わりに 働き。このように:

    SELECT ArtistName FROM Artists
    WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';

    結果:

    +------------+
    | ArtistName |
    +------------+
    | AC/DC      |
    +------------+

    1. Spring Data JPA Auditingが@Modifyingアノテーションを使用したJpaRepository更新メソッドで機能しないのはなぜですか?

    2. phpファイルのアップロード、ファイルのアップロードの種類を制限する方法

    3. SQLiteとは何ですか?

    4. データベース内のすべてのテーブルのドロップテーブルステートメントを生成する方法-SQLServer/T-SQLチュートリアルパート48