多くの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 | +------------+