Порядок сортировки запросов Android SQLiteDatabase

У меня есть данные в моей базе данных:

Alice
anderson
Beatrice
benny
Carmen
calzone

Используя этот код:

mDb.query(DATABASE_NAMES_TABLE, new String[] { KEY_ROWID,
            KEY_NAME }, null, null,
            null, null, KEY_NAME+ " ASC");

или этот код, при этом фильтр имеет значение "":

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID,
        KEY_NAME }, KEY_NAME + " LIKE ?",
        new String[] { filter+"%" }, null, null, null,
        null);

Он сортирует приведенные выше данные следующим образом:

Alice
Beatrice
Carmen
anderson
benny
calzone

Это нормальное поведение? Как мне получить его для сортировки в указанном выше порядке, где все As и Bs и Cs вместе? Спасибо.

Ответ 1

Вы можете указать чувствительность к регистру, добавив COLLATE NOCASE в предложение ORDER BY или (предпочтительно), когда вы создаете таблицу в объявлении этого конкретного столбца.

Ответ 2

SQL использует расположение ASCII для сортировки, поэтому вы можете использовать "COLLATE" каким-то образом...

Что-то в характере:

ORDER BY YourColumn Collate NOCASE

или

ORDER BY YourColumn Collate SQL_Latin1_General_CP850_BIN

Ответ 3

Курсор c = db.query(YOUR_TABLE_NAME, null, null, null, null, null, YOUR_COLOMN_NAME + "Collate NOCASE" );