Запрос 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 62

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.

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

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

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

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