Как собрать SQLite с ICU?
Для Windows можно собрать без ICU, при помощи Win API вызововSQLite и Unicode без ICU, Простой патч с использов...В движке БД SQLite функции UPPER, LOWER, LIKE и GLOB по умолчанию работают только с латинским алфавитом. Для того, чтобы обеспечить нормальную их работу с юникодными символами, SQLite можно собрать с поддержкой библиотеки ICU (дефайн SQLITE_ENABLE_ICU). Однако, для систем где по умолчанию нет ICU это добавляет пару лишних десятков мегабайт, что может быть неприемлемо для компактных утилит и использовании в различных embedded-системах. Так, как в WinAPI (и других API/фрэймворках) есть свои функции для работы со строками, можно использовать их.По ссылке можно скачать измененный исходник для версии 3.8.3 и собранную dll.
В SQLite есть специальное API для регистрации своей функции сравнения строк: Define New Collating SequencesWhen SQLite compares two strings, it uses a collating sequence or collating function (two words for the same thing) to determine which string is greater or if the two strings are equal. SQLite has three built-in collating functions: BINARY, NOCASE, and RTRIM.
    BINARY - Compares string data using memcmp(), regardless of text encoding.
    NOCASE - The same as binary, except the 26 upper case characters of ASCII are folded to their lower case equivalents before the comparison is performed. Note that only ASCII characters are case folded. SQLite does not attempt to do full UTF case folding due to the size of the tables required.
    RTRIM - The same as binary, except that trailing space characters are ignored.An application can register additional collating functions using the sqlite3_create_collation() interface.