Chcę porównać dwa ciągi w SQLite DB bez dbania o akcenty i sprawy. Mam na myśli "Événement" powinien być równy "evenment".Zlokalizowane COLLATE na porównywaniu ciągów SQLite
Na Debianie Wheezy, pakiet SQLite nie zapewnia OIOM. Dlatego skompilowałem oficjalny pakiet SQLite (wersja 3.7.15.2 2013-01-09 11:53:05) zawierający moduł ICU. Teraz mam lepszą obsługę Unicode (oryginalny lower()
stosowany tylko do znaków ASCII, teraz działa na inne litery). Ale nie mogę zastosować porównania do porównania.
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)
Numer SQLite documentation potwierdza, że jest to właściwy sposób zastosowania sortowania. Myślę, że documentation of this ICU extension jest trochę światła (kilka przykładów, nic na temat wielkości liter w przypadku sortowania). Nie mam pojęcia, dlaczego operator COLLATE
nie ma żadnego efektu w powyższym przykładzie. Proszę pomóż.