Seite 1 von 1

SQlite Abfrage groß/kleinschreibung

Verfasst: Mittwoch 13. Januar 2010, 01:18
von py_lo
Hallo zusammen,

Ich nutze sqlite3 und bin auf das Problem gestossen das in meiner
Abfrage z.B. "Müller" steht - jedoch in der DB "MÜLLER" gespeichert ist.

Bekomme also in dem Fall keine Rückgabe.

Aus der SQLITE hilfe:
The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters.
Sagt mir doch das bei unicode zeichen keine groß/klein schreibungsunabhängigkeit gegeben ist - oder?

Aber was tun? In ASCII kann es ja nicht wandeln wg. der Umlaute.

Verfasst: Mittwoch 13. Januar 2010, 02:01
von jbs
Nimm ein `_` als Platzhalter. Also `WHERE name LIKE "m_ller"`.

Verfasst: Mittwoch 13. Januar 2010, 11:25
von py_lo
Uhm ja, aber damit habe ich das Problem doch nicht behoben - ich
Übergebe bei der Abfrage utf-8 kodiert, da habe ich kein Problem mit
Umlauten sondern das er zwischen zwischen Groß- und Kleinschreibung
unterscheidet...

Außerdem brauche ich eine eindeutige Identifizierung - das könnte ja
mit Platzhalter nu auch "möller" sein...

Verfasst: Mittwoch 13. Januar 2010, 11:28
von jbs
Ich meine ich habe gelesen, das das ein Bug ist.

Da ist es ja:
A bug: SQLite only understands upper/lower case for ASCII characters by default. The LIKE operator is case sensitive by default for unicode characters that are beyond the ASCII range. For example, the expression 'a' LIKE 'A' is TRUE but 'æ' LIKE 'Æ' is FALSE.)

Verfasst: Mittwoch 13. Januar 2010, 11:30
von sma

Verfasst: Mittwoch 13. Januar 2010, 12:06
von py_lo
:( Tja, ich weiss nicht so recht - in reinem python ist da dann wohl nix zu machen,
wie geht Ihr denn mit dem Problem um? Ich brauche sqlite schon aufgrund
der vergleichsweise geringen Größe.

Und es Bug ist es demnach ja nicht sondern ein 'absichtlich' fehlendes
feature :mrgreen:

Verfasst: Mittwoch 13. Januar 2010, 12:49
von sma
Ich hätte gedacht, http://docs.python.org/library/sqlite3. ... e_function würde helfen.

Stefan

Verfasst: Mittwoch 13. Januar 2010, 14:27
von py_lo
Dann werd ich mich da mal einlesen, danke - was ich im vorwege nicht verstehe
...case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library
- und das soll ich mal eben in einer kleiner Funktion in Python erledigen können?

Naja mal gucken...