Forum: Rails Germany Umlautsortierung sqlite

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9e0ec2384dd80c7f2c190e02e596e15b?d=identicon&s=25 Michael Kastner (Guest)
on 2009-02-19 13:37
(Received via mailing list)
Hallo,

ich war vollkommen naiv davon ausgegangen, daß die UTF-8-Codierung bei
sqlite
auch bedeuten würde, daß die Umlautsortierung funktioniert. Dem ist wohl nicht
so. Bei MySql kann ich ja die Zeichensatz und collation direkt beim
Erstellen
der Datenbank mitgeben.

Weiß jemand, wie ich sqlite dazu bringe, die Umlaute nach deutscher
Sortierung
zu sortieren? Ja, für die Schlaumeier, ich weiß, es gibt zwei Regeln in der
deutschen Sprache für Umlautsortierung. Eine davon würde mir fürs erste reichen.

Hat jemand einen Tip?

Viele
Grüße
Michael Kastner
59528506e6297141161afcde91d677c9?d=identicon&s=25 Nicolai Reuschling (codeblogger)
on 2009-02-19 14:13
(Received via mailing list)
Hallo Michael!
Zitat aus der FAQ(18) von sqlite.org:

Q: Case-insensitive matching of Unicode characters does not work.

A: The default configuration of SQLite only supports case-insensitive
comparisons of ASCII characters. The reason for this is that doing full
unicode case-insensitive comparisons and case conversions requires
tables
and logic that would nearly double the size of the SQLite library. The
SQLite developers reason that any application that needs full unicode
case
support probably already has the necessary tables and functions and so
SQLite should not take up space to duplicate this ability.

Instead of providing full unicode case support by default, SQLite
provides
the ability to link against external unicode comparison and conversion
routines. The application can overload the built-in
NOCASE<http://www.sqlite.org/datatype3.html#collation> collating
sequence (using
sqlite3_create_collation()<http://www.sqlite.org/c3ref/create_collation.html>)
and the built-in like() <http://www.sqlite.org/lang_corefunc.html#like>,
upper() <http://www.sqlite.org/lang_corefunc.html#upper>,
andlower()<http://www.sqlite.org/lang_corefunc.html#lower> functions
(using
sqlite3_create_function()<http://www.sqlite.org/c3ref/create_function.html>).
The SQLite source code includes an "ICU" extension that does these
overloads. Or, developers can write their own overloads based on their
own
unicode-aware comparison routines already contained within their
project.

Sieht wohl schlecht aus - mit SQLite.

Viele Grüße
Nicolai
9e0ec2384dd80c7f2c190e02e596e15b?d=identicon&s=25 Michael Kastner (Guest)
on 2009-02-19 14:35
(Received via mailing list)
Na ja, ist nur 'ne kleine Anwendung, die schon produktiv läuft. Dann halt
wieder
wie in der Steinzeit:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(test,'ö','oe'),'A','AE'),'Ö','OE'),'ä','ae'),'ü','ue'),'Ü','UE')

Alles Leben ist Problemlösen.

Danke für den Hinweis. Hat mir einiges an Grübelei erspart.

Viele
Grüße
Michael

Codeblogger schrieb:
This topic is locked and can not be replied to.