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 | +------------+