AllesMeins: MySQL: Wildcarts andersrum

Hi,

hab den ganz großen Verdacht, das ich gerade den Wald vor lauter Bäumen nicht sehe. Aber ich hätte in MySQL gerne sowas wie beidseitige Wildcarts. Ich habe eine Tabelle mit Städtenamen. Meine derzeitige Abfrage sieht so aus:

SELECT name FROM staedte WHERE name LIKE '%>>Usereingabe<<%'

Das funktioniert prima, wenn die Usereingabe kürzer ist als der Name in der Datenbank. Also wenn er zum Beispiel "Frankf" eingibt wird auch "Frankfurt" gefunden. Nun soll aber auch "Frankfurt" gefunden werden, wenn der Nutzer "Frankfurt am Main" eingegeben hat. Also eigentlich sowas wie ...WHERE %name% LIKE '%>>>Usereingabe<<<%'...
Wie geht das?

Grüße

Marc

  1. Hi,

    Wie geht das?

    das überfordert in der Tat den Like Operator.
    Mir fallen auf Anhieb zwei Möglichkeiten ein:

    1. Dreh das Suchkriterium um:
      WHERE '>>Usereingabe<<' LIKE CONCAT('%',name,'%')
      Bin mir allerdings gerade nicht sicher, wie die Datenbank auf das CONCAT beim LIKE reagiert.

    2. Verwende quasi eine Umkehrfunktion
      WHERE INSTR('>>Usereingabe<<', name)>0

    MfG
    Rouven

    --
    -------------------
    Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
    1. Hi,

      danke funktioniert!

      Marc

  2. Hallo,

    nur mal der Neugierde wegen: Soll bei der Eingabe „Frankfurt am Main“ neben „Frankfurt“ auch „Frank“ und „furt“ gefunden werden und damit auch „a“? oder bezieht sich dieser Teil der Suche auf ganze Wörter?

    Gruß
    Olaf

    1. Hi,

      wenn es eine Stadt namens "A" in der Datenbank gibt ;)

      Grüße

      Marc