Mailinglisten-Archive |
Hallo Christopher, > Von: Christopher Nehls [mailto:christopher.nehls_(at)_vhma.de] > Ich habe in einer Tabelle in einem Feld eine Catalognummer, die an > verschiedenen Stellen Leerzeichen enthält. > Jetzt kann es sein, dass der User der Seite nach einer Catalognummer ohne > Leerzeichen sucht. Die übersieht man halt so gern... Wie kann ich > jetzt das > SQL-Statement aufbauen, damit eine Suche nach dem Datensatz 12 234 56 den > Datensatz 1223456 findet? Vorweg: Mit "stripped" bezeichne ich eine reduzierte Nr, die um Leerzeichen und auch ggf. andere störende Zeichen (z.B. - . ( ) ) bereinigt wurde. Dies wird entweder mit Hilfe von MySql-Funktionen oder mit Funktionen der jeweiligen Programmiersprache erledigt. Für vernünftige Performance sollte die "stripped" nummer in einem extra Feld abgelegt werden das dann indiziert wird. Das heißt natürlich Mehraufwand und Redundanz. Aber ist durchaus lohnenswert. Aufwand heißt: - Bei jeder Aktualisierung bzw Neuanlage muß dieses "stripped" Feld neu gebildet werden. (wäre ideal mit triggern zu lösen, wenn es denn welche gäbe) - Vor der Suche wird der zu findende Wert vor der Suche ebenfalls "stripped". Grob umrissen: Tabelle enthält u.a. folgende Spalten Stripfkt heißt z.B. mystrip() (name ist ausgedacht) CATALOGNR CATALOGNR_STRIP (indiziert, ggf. mehrdeutig) ... Bei Änderungen/Neu: CATALOGNR_STRIP=mystrip(CATALOGNR) Bei Suche: suchfeld=mystrip(suchfeld); "SELECT ... WHERE CATALOGNR_STRIP like '"+suchfeld+"%'" Gruss, Michael Donning --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive