When creating my SQLite database in Android I set the database locale - db.setLocale(new Locale(\"cz_CZ\")). This is a Czech locale.
A SELECT statement works and tak
Creating a second normalised column can be used to go around limitations (as mentioned briefly in other answers).
This means in practice that you have to create another (shadow) column of your first where the same data in a fixed case (e.g. all upper chars) is stored. Case insensitive queries (including like queries) can be made on this new column with search values in the same case.
If the first column "a" contains
AAA
aaa
Bbb
äää
ééé
The second column a_shadow would contain for the same rows
AAA
AAA
BBB
ÄÄÄ
ÉÉÉ
and your original query (example) "select a from mytable where a='äää'"
would be replaced with "select a from mytable where A='ÄÄÄ'"
Your code needs to be updated to fill the converted shadow content when adding the primary content. If the column is added after creation or you cannot change the code existing values may need to be converted using an update query. Example:
UPDATE mytable SET a_shadow=UPPER(a);