4 messages in com.mysql.lists.mysql-deRe: LIKE mit merkwürdigen Folgen
FromSent OnAttachments
lis...@peterschen.de08 Sep 2005 07:49 
Felix Antonius Wilhelm Ostmann08 Sep 2005 08:14 
Sebastian Mendel08 Sep 2005 08:23 
Thorsten Jungblut08 Sep 2005 09:49 
Subject:Re: LIKE mit merkwürdigen Folgen
From:Thorsten Jungblut (ul@netcorner.org)
Date:09/08/2005 09:49:54 AM
List:com.mysql.lists.mysql-de

Hallo,

Hallo,

ich habe soeben versucht einen Suchindex auf Inhalte mit Anfangsbuchstaben zu realisieren. Leider erhalte ich bei einem Query, der etwa wie folgt aussieht:

SELECT * FROM inhalte2 WHERE inhalt_id = 76878 AND titel LIKE 'Y%';

Das (wahre) Geheimnis nennt sich "Collation". Ab einer bestimmten MySQL-Version (angeblich 4.0, spaetestens 4.1) hat jede Datenbank, Tabelle und Spalte ein CHARSET und eine COLLATION.

CHARSET ist dabei der Zeichensatz (z.b. latin1 oder utf8). Dieser bestimmt, wie die Inhalte der Datenbank/Tabelle/Spalte zu interpretieren sind. Default ist latin1.

COLLATION ist so eine Art "Vergleichsanweisung", die eingesetzt wird, um String-wertige Inhalte zu vergleichen. Auch diese kann man je Datenbank/Tabelle und Spalte einzeln setzen. Die COLLATION bestimmt, ob Umlaut U = UE ist, ob ein Y = UE ist, ob Grossbuchstaben = Kleinbuchstaben sind u.s.w. Default hier ist latin1_swedish_ci. Und da ist netterweise UE=Y :-)

Nachzulesen ist das alles hier und auf den folgenden Seiten:

http://dev.mysql.com/doc/mysql/en/charset-server.html

Viele Gruesse, Thorsten