phpbar.de logo

Mailinglisten-Archive

[php] Mysql suche mit LIKE

[php] Mysql suche mit LIKE

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Nov 7 14:42:27 CET 2007


Hallo Michael,

Am Mittwoch, 7. November 2007 schrieb Michael Dunkel:
> Lutz Zetzsche schrieb:
> > die Frage ist, wie die Spalten angelegt sind, die Du durchsuchst.
> > Ist die Kollation "ci" - case-insensitive - oder "cs" -
> > case-sensitive? Handelt es sich um Text- oder Binärfelder? Letztere
> > sind
> > case-sensitive.
> >
> > Siehe auch:
> > http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

[...]

> ich muss nochmal dazu sagen, wo die Tabelle noch nicht so viele
> Einträge hatte, ging die suche mit Like ohne Problem
>
> CREATE TABLE `Keyword` (
>   `keyid` bigint(20) unsigned NOT NULL auto_increment,
>   `keyword` varchar(80) collate utf8_bin NOT NULL,
>   `urlencoded_keyword` varchar(255) collate utf8_bin NOT NULL,
>   PRIMARY KEY  (`keyid`),
>   UNIQUE KEY `keyword` (`keyword`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
> AUTO_INCREMENT=22424830 ;
>
> ich dachte mir ich nehm UTF-8 weil ich recht viele Sprachen abdecken
> muss ...

alleine bei der Umstellung von ISO-8859-1 auf UTF-8 wird die Datenmenge 
schon größer. Trotzdem ist UTF-8 natürlich in Deinem Fall sinnvoll. ;-)

Die Antwort für Dein Problem sollte der Parameter "COLLATE=utf8_bin" in 
Deinem CREATE-Statement sein. Das "bin" steht für "binary", d.h. es 
handelt sich um Binärfelder. Die sind case-sensitive. Wenn Du das 
anders brauchst, mußt Du die Felder umwandeln.


Viele Grüße,
Lutz

php::bar PHP Wiki   -   Listenarchive