phpbar.de logo

Mailinglisten-Archive

[php] Suche in MySql

[php] Suche in MySql

Sebastian Mendel lists at sebastianmendel.de
Mon Jul 16 12:35:06 CEST 2007


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