Kategorien:

Zeichenfolgen- und Binärfunktionen

SOUNDEX

Gibt eine Zeichenfolge zurück, die eine phonetische Darstellung der Eingabezeichenfolge enthält.

Diese Funktion wird normalerweise verwendet, um zu bestimmen, ob zwei Zeichenfolgen, z. B. die Familiennamen Levine und Lavine oder die Wörter to und too, eine ähnliche Aussprache in englischer Sprache aufweisen.

Syntax

SOUNDEX( <varchar_expr> )

Argumente

Varchar-Ausdruck

Zeichenfolge, für die eine Darstellung der Aussprache zurückgegeben wird. Für die Zeichenfolge sollte der lateinische oder Unicode-Zeichensatz verwendet werden.

Rückgabewerte

Der zurückgegebene Wert ist ein VARCHAR-Wert, der die phonetische Darstellung der Eingabezeichenfolge enthält. Mit anderen Worten, der Rückgabewert ist eine Zeichenfolge (kein Ton), die die Aussprache und nicht die Schreibweise der Eingabezeichenfolge darstellt.

Der zurückgegebene Wert beginnt mit einem Buchstaben, der den ersten Buchstaben in der Zeichenfolge darstellt, gefolgt von 3 Ziffern (z. B. s400, c130).

Weitere Informationen zur Berechnung des Rückgabewerts finden Sie unter Phonetischer Soundex-Algorithmus (in Wikipedia).

Nutzungshinweise

  • Da die Funktion nur vier Zeichen (einen Buchstaben und drei Ziffern) zurückgibt, wird die Ausgabe in erster Linie von den ersten Silben der Eingabe und nicht von der gesamten Zeichenfolge bestimmt.

    Die folgende Anweisung vergleicht beispielsweise drei Zeichenfolgen und gibt für jede Zeichenfolge denselben SOUNDEX-Wert zurück, da sie, obwohl sie völlig unterschiedliche Schreibweisen und Bedeutungen haben, mit phonetisch ähnlichen Silben beginnen:

    SELECT SOUNDEX('I love rock and roll music.'),
           SOUNDEX('I love rocks and gemstones.'),
           SOUNDEX('I leave a rock wherever I go.');
    +----------------------------------------+--------------------------+------------------------------------------+
    | SOUNDEX('I LOVE ROCK AND ROLL MUSIC.') | SOUNDEX('I LOVE ROCKS.') | SOUNDEX('I LEAVE A ROCK WHEREVER I GO.') |
    |----------------------------------------+--------------------------+------------------------------------------|
    | I416                                   | I416                     | I416                                     |
    +----------------------------------------+--------------------------+------------------------------------------+
    

Beispiele

Die folgende Abfrage gibt SOUNDEX-Werte für zwei Namen zurück, die unterschiedlich geschrieben sind, jedoch normalerweise ähnlich ausgesprochen werden:

SELECT SOUNDEX('Marks'), SOUNDEX('Marx');
+------------------+-----------------+
| SOUNDEX('MARKS') | SOUNDEX('MARX') |
|------------------+-----------------|
| M620             | M620            |
+------------------+-----------------+

Die folgende Abfrage zeigt, wie Sie mit SOUNDEX potenziell verwandte Zeilen in verschiedenen Tabellen finden:

Erstellen und laden Sie die Tabellen:

CREATE TABLE sounding_board (v VARCHAR);
CREATE TABLE sounding_bored (v VARCHAR);
INSERT INTO sounding_board (v) VALUES ('Marsha');
INSERT INTO sounding_bored (v) VALUES ('Marcia');

Suchen Sie nach verwandten Datensätzen ohne SOUNDEX:

SELECT * 
    FROM sounding_board AS board, sounding_bored AS bored 
    WHERE bored.v = board.v;
+---+---+
| V | V |
|---+---|
+---+---+

Suchen Sie mit SOUNDEXnach verwandten Datensätzen:

SELECT * 
    FROM sounding_board AS board, sounding_bored AS bored 
    WHERE SOUNDEX(bored.v) = SOUNDEX(board.v);
+--------+--------+
| V      | V      |
|--------+--------|
| Marsha | Marcia |
+--------+--------+