
Der Funktionsblock SOUNDEX berechnet die Laut-Ähnlichkeit einer Zeichenkette.
Soundex-Werte haben die Eigenschaft, dass ähnlich ausgesprochene Wörter den gleichen Soundex-Wert erzeugen. Dies kann zur Suche in Datenbanken verwendet werden, wenn Sie zwar die Aussprache aber nicht die genaue Schreibweise kennen. Die Funktion Soundex gibt eine Zeichenkette aus vier Zeichen, beginnend mit einem Buchstaben, zurück.
Der Eingang definiert die zu berechnende Zeichenkette.
Gibt eine Zeichenkette zurück mit dem Soundex-Code.
Jeder Soundex-Code besteht aus einem Buchstaben gefolgt von drei Ziffern, z. B. A532 für Antcas. Hat das zu codierende Wort so viele Buchstaben, dass man mehr Ziffern erzeugen könnte, bricht man nach der dritten Ziffer ab. Hat das Wort zu wenige Buchstaben, füllt man die letzten Ziffern mit Nullen auf. Der asiatische Name Lee wird also als L000 codiert.
| Ziffer | Repräsentierte Buchstaben |
|---|---|
| 1 | B, F, P, V |
| 2 | C, G, J, K, Q, S, X, Z |
| 3 | D, T |
| 4 | L |
| 5 | M, N |
| 6 | R |
Die Vokale A, E, I, O und U und die Konsonanten H, W und Y sind ausser beim ersten Zeichen zu ignorieren. Erweiternd für die deutsche Sprache kann definiert werden: Die Umlaute Ä, Ö und Ü sind zu ignorieren, das „scharfe S“ ß wird wie das einfache S codiert.
Haben mehrere im originalen Zeichenkette aufeinanderfolgende Buchstaben den gleichen Soundex-Code, erscheint dieser im Ergebnis nur einmal, aus abfx wird also etwa A120 (a bleibt, weil erster Buchstabe, b und f ergeben beide den gleichen code 1, x ergibt 2, am Ende wird eine Null angehängt, um vier Zeichen zu erhalten).
Bei der praktischen Anwendung des Soundex-Verfahrens werden hauptsächlich zwei Punkte kritisiert: Zum einen ist es sehr auf die englische Sprache ausgerichtet, zum anderen bietet es nur eine sehr grobe Analyse.
Dennoch ist festzuhalten, dass es sich bei dem dargestellten Algorithmus wohl um den am häufigsten angewendeten zur phonetischen Suche handelt. Mit dazu beigetragen hat sicherlich, dass für die Datenbank Oracle bereits sehr früh ein entsprechender PL/SQL-Standardbefehl implementiert wurde.