ich zwei Strings in einer SQLite DB vergleichen will für die Akzente und den Fall ohne Pflege. Ich meine "Événement" sollte gleich "evenèment" sein.Lokalisierte COLLATE auf einem SQLite String-Vergleich
Auf Debian Wheezy, wird das SQLite-Paket ICU nicht bieten. Also habe ich das offizielle SQLite-Paket (Version 3.7.15.2 2013-01-09 11:53:05) mit einem ICU-Modul zusammengestellt. Nun, ich habe eine bessere Unicode-Unterstützung (das Original lower()
gilt nur für ASCII-Zeichen, jetzt funktioniert es für andere Buchstaben). Aber ich kann es nicht schaffen, eine Vergleiche auf einen Vergleich anzuwenden.
SELECT icu_load_collation('fr_FR', 'FRENCH');
SELECT 'événement' COLLATE FRENCH = 'evenement';
-- 0 (should be 1)
SELECT 'Événement' COLLATE FRENCH = 'événement';
-- 0 (should be 1 if collation was case-insensitive)
SELECT lower('Événement') = 'événement';
-- 1 (at least lower() works as expected with Unicode strings)
The SQLite documentation bestätigt, dass dies der richtige Weg ist eine Sortierung anzuwenden. Ich denke, die documentation of this ICU extension ist ein bisschen Licht (einige Beispiele, nichts auf Groß-und Kleinschreibung für Kollatierungen).
Ich verstehe nicht, warum die COLLATE
Betreiber keinen Einfluss in meinem Beispiel oben haben. Bitte helfen Sie.