Mailinglisten-Archive |
Achim Fink schrieb: > Ich habe in einer Datenbank eine Spalte in der Artikelnummer in folgender > Form auftreten: > > ACK 128 MSV > AST M1613 MS > CK 386 KON MSV > > Also Unterschiedliche Zeichenlänge mit Leerzeichen an unterschiedlichen > Positionen. Im Moment mache ich eine Abfrage in dieser Form: > > SELECT * FROM artikel WHERE art_nr LIKE „%<suchtext>%“ > > Dabei muss man allerdings wissen wo sich die Leerzeichen befinden. Wenn > jemand z.B. nach ACK 128 MSV sucht und ACK128MSV eingibt bekommt er keine > Daten. naja, die Lösung wurde ja schon gesagt, beide in eine einheitliche Form bringen, sprich Leerzeichen entfernen, da das LIKE aber nun schon ziemlich langsam ist und eine Funktion wie STR_REPLACE() das nicht gerade beschleunigt, solltest du das entweder fest in der DB machen, oder wenn du lieber schön Formatierte Artikel-Nummern haben möchtest eine weitere Spalte alá art_nr_search anlegen, welche die Artikel-Nummer ohne Leerzeichen enthält. um das LIKE '%... wirst du nicht drum herum kommen, auch wenn Yannik das gern möchte, ohne den Benutzern restriktive vorgaben zu machen bzw. die Suchfunktion einzuschränken ... du könntest natürlich erst eine Suche mit '=' oder LIKE '...%' probieren und nur wenn die keine Ergebnisse bringt das LIKE '%... verwenden - da die meisten Benutzer wohl eher den Anfang oder die Komplette Artikelnummer eingeben würde das wohl schon enorm helfen (vorausgesetzt es gibt ein Index auf art_nr) ... -- Sebastian
php::bar PHP Wiki - Listenarchive