Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL SOUNDEX()-Beispiele

Eine der vielen MySQL-String-Funktionen ist SOUNDEX() Funktion. Diese Funktion gibt einen Soundex-String aus einem gegebenen String zurück. Wenn zwei Wörter gleich klingen, sollten sie den gleichen Soundex-String haben. Wenn zwei Wörter ähnlich, aber nicht genau gleich klingen, sieht ihre Soundex-Zeichenfolge möglicherweise ähnlich, aber nicht genau gleich aus.

Dieser Artikel enthält eine Reihe von Soundex-Beispielen, um zu demonstrieren, wie die SOUNDEX() Funktion funktioniert in MySQL.

Syntax

Schauen wir uns zunächst die Syntax an:

SOUNDEX(str)

Wobei str ist der String, zu dem Sie den Soundex-String benötigen.

Beispiel

Hier ist ein Beispiel für das Abrufen der Soundex-Zeichenfolge aus einer Zeichenfolge:

SELECT SOUNDEX('Sure');

Ergebnis:

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

In diesem Fall also das Wort Sure hat einen Soundex-String von S600 .

Beispiel – Genaue Übereinstimmung

Hier ist ein Beispiel dafür, wo zwei Wörter gleich (oder sehr ähnlich) klingen und daher denselben Soundex-String haben:

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Ergebnis:

+------+-------+
| Sure | Shore |
+------+-------+
| S600 | S600  |
+------+-------+

Hier sind einige genauere Übereinstimmungsbeispiele:

SELECT 
    SOUNDEX('Dam') AS Dam,
    SOUNDEX('Damn') AS Damn,
    SOUNDEX('Too') AS Too,
    SOUNDEX('Two') AS Two;

Ergebnis:

+------+------+------+------+
| Dam  | Damn | Too  | Two  |
+------+------+------+------+
| D500 | D500 | T000 | T000 |
+------+------+------+------+

Beispiel – Keine Übereinstimmung

Hier ist ein Beispiel, bei dem zwei Wörter nicht gleich klingen und daher unterschiedliche Soundex-Strings haben:

SELECT 
    SOUNDEX('Water') AS Water, 
    SOUNDEX('Coffee') AS Coffee;

Ergebnis:

+-------+--------+
| Water | Coffee |
+-------+--------+
| W360  | C100   |
+-------+--------+

Wie Sie sehen können, ist der Soundex-String für diese beiden Wörter völlig unterschiedlich.

Beispiel – Unterschiedliche Schreibweisen

Hier ist ein Beispiel für zwei Wörter, die unterschiedliche Schreibweisen haben (je nachdem, aus welchem ​​Land Sie kommen):

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

Ergebnis:

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

Wir können also sehen, dass solche Wörter denselben Soundex-String haben (solange sie gleich ausgesprochen werden).

Beispiel – Gleicher Sound, anderer Soundex

Es gibt Fälle, in denen Wörter gleich klingen, aber unterschiedliche Soundex-Zeichenfolgen haben. Der häufigste Grund dafür ist, dass sie mit einem anderen Buchstaben beginnen, von denen einer ein stiller Buchstabe ist. Aus den vorherigen Beispielen ist Ihnen vielleicht aufgefallen, dass der Soundex-String mit dem ersten Buchstaben des Strings beginnt.

Wenn Sie also zwei Wörter haben, die genau gleich ausgesprochen werden, aber mit einem anderen Buchstaben beginnen, haben sie eine andere Soundex-Zeichenfolge.

Hier sind einige Beispiele:

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Ergebnis:

+------+-------+------+------+
| Hole | Whole | Our  | Hour |
+------+-------+------+------+
| H400 | W400  | O600 | H600 |
+------+-------+------+------+

Die Paare in diesem Beispiel haben unterschiedliche Soundex-Saiten, nur weil ihr Anfangsbuchstabe unterschiedlich ist.

Beispiel – Soundex in einer Datenbankabfrage

Hier ist ein Beispiel für die Verwendung von SOUNDEX() in einer Datenbankabfrage. In diesem Fall suchen wir nach Schallplatten, die wie „Ay See Dee Ci“ klingen:

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

Ergebnis:

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

Also AC/DC hat offenbar denselben Soundex-Code wie Ay See Dee Ci (zumindest bei Verwendung von MySQL) Nur um sicherzugehen, hier sind die Soundex-Codes für diese beiden Strings:

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

Ergebnis:

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

Eine Alternative:KLINGT WIE

Eine alternative Abfrage hätte mit SOUNDS LIKE konstruiert werden können anstelle von SOUNDEX() Funktion. So:

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

Ergebnis:

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