Groß- und Kleinschreibung bei SQLite

20. März 2011 · Programmierung · andreas · Kein Kommentar

Eine der Stolperfallen beim Wechsel zwischen MySQL und SQLite ist, daß SQLite in der Standardeinstellung z.B. bei SELECT-Statements zwischen Groß- und Kleinschreibung unterscheidet. Ein

SELECT * FROM meinetabelle WHERE meinfeld = 'test';

wird zwar eine Zeile mit meinfeld = ’test’ finden, für eine vorhandene Zeile mit meinfeld = ‘Test’ aber kein Ergebnis zurückliefern. Möchte man das SELECT ohne Berücksichtigung von Groß - und Kleinschreibung durchführen, so kann dies durch das Anhängen von ‘COLLATE NOCASE’ erfolgen, also

SELECT * FROM meinetabelle WHERE meinfeld = 'test' COLLATE NOCASE;

womit auch ‘Test’, ’tEst’, ‘TEST’ und noch ein paar andere Schreibweisen gefunden werden.

Möchte man das Verhalten für einzelne Tabellen von Anfang an umstellen, so kann ‘COLLATE NOCASE’ auch entweder direkt bei der Spaltendefinition oder beim Erzeugen eines Indexes angegeben werden.