Hi
I wanted to compare strings in a SQLite DB without caring for the accents
and the case. I mean "Événement" should be equal to "evenèment".
The ICU extension enables a case-insensitive LIKE, but 'é' will still be
different from 'É'. Anyway, using the ICU LIKE won't use any index, so I
was very reluctant to go this way.
The only solution I found was to patch the ICU extension[^1]. I added an
optional parameter to the function that creates a new collation: the
strength of the collation. Its default value is 3, and when I set it to
1, I get what I wanted.
SELECT icu_load_collation('fr_FR', 'french');
SELECT icu_load_collation('fr_FR', 'french_ci', 1); -- with patch
I first thought this was a very frequent need, so I had asked about this
on Stack Overflow, hoping for a quick answer. I ended up posting there a
detailed answer[^2].
I'm perfectly satisfied with this solution, but I thought I should share
it. I believe it could be merged into the ICU extension, because it
doesn't break compatibility, it just adds a new feature.
[^1]: <https://gist.github.com/mytskine/5028755>
[^2]:
<http://stackoverflow.com/questions/15051018/localized-collate-on-a-sqlite-string-comparison>
Regards
--
François Gannaz
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users