phpbar.de logo

Mailinglisten-Archive

AW: Leerzeichen bei der Suche ignorieren

AW: Leerzeichen bei der Suche ignorieren

Michael Donning mysql_(at)_lists.phpcenter.de
Mon, 23 Apr 2001 13:14:14 +0200


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