• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

dt. Umalute in einer Suchabfrage

MartinF

New member
Hallo,
in meiner Datenbank (mysql) gibt es Daten mit deutschen Umlauten (äöüß). Ich möchte nun eine SQL-Abfrage erstellen, mit dem jeweils bei der Eingabe von "Straße" oder von "Strasse" alle Einträge aufgelistet werden.
Das Problem hierbei ist, daß diese Umlaute mehrfach auftreten können und es auch Namen mit ae,ue usw. wie "kuehlen" gibt.

Kann mir jemand dabei weiterhelfen?

Gruß
Martin
 
Gar nicht so einfach....

Prinzipiell:

1. Umlaute finden
2. Umschreibungen festlegen (Ä=ae, ü=ue)...
3. Abfrage mit OR erweitern.....
 
Also da es fast unmöglich ist alle Kombinationen mit einem Where zu erschlagen (nicht unbedingt unmöglich, aber ein Skript müßte jede beliebige Kombantion ausrechnen und als SQL Query zusammensetzen, was bei einem Feld vielleicht noch geht, wenn mehr Felder abgefragt werden müssen, dann wirds schnell übelst....)

Aber Abhilfe könnte der SQL Befehl SOUNDEX schaffen. Mit seiner Hilfe können Wörter in einen Hashwert umgewandelt werden, der bei ähnlichen, bzw. ähnlich klingenden Wörtern identisch ist (sein sollte).
Mit select SOUNDEX('kuehlen'), SOUNDEX('kühlen') kannst Du das beispielsweise überprüfen. Wie gut die Funktion für Deine Zwecke paßt mußt Du austesten (Strasse und Straße ergeben dummerweise einen leicht verschiedenen Wert....)
Die Funktion SOUNDEX kannst Du dann aber ganz normal in der Where Klausel verwenden (z.B. select feld1, feld2 from table where SOUNDEX(feld1) = SOUNDEX('$searchString') )
 
der Soundex Befehl ist für meine Zwecke leider zu ungenau, da dieser zu viele Datensätze zurückliefert.

Schwierig wird es alle Kombinationen zu finden, da ein einfacher replace - Befehl gleich alle Umlaute verändert und ich diese alle schrittweise errechnen muß.
 
Zurück
Oben