アクセントや大文字と小文字を気にせずに、SQLite DB で 2 つの文字列を比較したいと考えています。つまり、「Événement」は「evenèment」と等しいはずです。
Debian Wheezy では、SQLite パッケージは ICU を提供しません。そこで、ICU モジュールを含む公式の SQLite パッケージ (バージョン 3.7.15.2 2013-01-09 11:53:05) をコンパイルしました。現在、より優れた Unicode サポートがあります (元lower()
は ASCII 文字のみに適用されていましたが、現在は他の文字にも対応しています)。しかし、比較に照合を適用することはできません。
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)
SQLiteのドキュメントでは、これが照合を適用する正しい方法であることが確認されています。この ICU 拡張機能のドキュメントは少し軽いと思います(例が少なく、照合順序の大文字と小文字の区別については何もありません)。
COLLATE
上記の例で演算子が効果がない理由がわかりません。助けてください。