MySQL: Wildcarts andersrum
AllesMeins
- datenbank
1 Rouven0 Olaf Schneider
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
Hi,
Wie geht das?
das überfordert in der Tat den Like Operator.
Mir fallen auf Anhieb zwei Möglichkeiten ein:
Dreh das Suchkriterium um:
WHERE '>>Usereingabe<<' LIKE CONCAT('%',name,'%')
Bin mir allerdings gerade nicht sicher, wie die Datenbank auf das CONCAT beim LIKE reagiert.
Verwende quasi eine Umkehrfunktion
WHERE INSTR('>>Usereingabe<<', name)>0
MfG
Rouven
Hi,
danke funktioniert!
Marc
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
Hi,
wenn es eine Stadt namens "A" in der Datenbank gibt ;)
Grüße
Marc