我想比较 SQLite DB 中的两个字符串,而不关心重音和大小写。我的意思是“É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
操作员在我上面的例子中没有效果。请帮忙。