Запрос SQLite в алфавитном порядке без учета регистра [дубликат]

этот вопрос уже есть ответ здесь:

все, что я хочу сделать, это схватить вещи в алфавитном порядке и игнорировать заглавные буквы.

db.rawQuery("SELECT " + catName + " FROM "+tableName+" ORDER BY "+catName+" ASC COLLATE NOCASE;", null);

Это код, который я использую выше, но он всегда дает мне SQLite исключение, говорящее, что COLLATE является синтаксической ошибкой.

android.база данных.базы данных SQLite.SQLiteException: рядом с "COLLATE": синтаксическая ошибка:, при компиляции: выберите исполнителя из testTable COLLATE NOCASE ASC

3 ответов


COLLATE идет перед направлением заказа:

db.rawQuery("SELECT " + catName 
           + " FROM " +tableName 
        +" ORDER BY "+catName+" COLLATE NOCASE ASC;", null);

но вам не нужно ASC -- это значение по умолчанию, поэтому вы можете использовать:

db.rawQuery("SELECT "+ catName 
            +" FROM "+ tableName 
        +" ORDER BY "+ catName +" COLLATE NOCASE;", null);

добавить COLLATE NOCASE после строки orderBy.

db.запрос (таблица, столбцы, выделение, selectionArgs, groupBy, имеющий, orderBy + "COLLATE NOCASE ASC");

здесь, заказ ASC или DESC зависит от вашей потребности.


Это тоже должно работать, я думаю:

db.rawQuery("SELECT "+ catName 
        +" FROM "+ tableName 
    +" ORDER BY lower("+ catName +");", null);