Mailinglisten-Archive |
Hallo, > Von: Till[SMTP:phpcenter.de_(at)_klimpong.com] > > ich habe da ein Problem mit einer Suche in einer MySQL-DB. > > Wenn ich ueber ein Formular nach "Joe" mit "SELECT * FROM table WHERE > field LIKE '%$search%'" suche, bekomme ich 1 Ergebnis (gut so). Wenn > ich statt dessen "joe" eingebe, bekomme ich 0 (nicht gut). Laut > MySQL-Doku(http://www.mysql.com/Doc/C/a/Case_sensitivity.html) ist > eine Suche mit LIKE case insensitiv, heisst, eigentlich muesste sowohl > "Joe", als auch "joe" ("jOe", "JoE", usw.) gefunden werden. > > Irgendwie geht's hier doch nicht. Hat jemand eine Idee, oder uebersehe > ich schlichtweg etwas? > Vermutlich hast du die Tabellenspalte als BLOB definiert, statt als TEXT. Der einzigste Unterschied zwischen den beiden Typen ist, daß bei TEXT die Suche mit LIKE case-insensitive ist, bei BLOB case-sensitive. Ein einfaches ALTER TABLE .... sollte Abhilfe schaffen, oder auf beiden Seiten des vergleichs lower(...) LIKE lower(...) verwenden, dann werden die Strings in Kleinbuchstaben vor dem Vergleich umgewandelt. Grüß,e Mathias
php::bar PHP Wiki - Listenarchive