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

56

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

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

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

android.database.sqlite.SQLiteException: рядом с "COLLATE": синтаксическая ошибка: при компиляции: SELECT Artist FROM testTable COLLATE NOCASE ASC

Теги:
sql-order-by
collate

3 ответа

149
Лучший ответ

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);
  • 1
    SOOOO странно! Я думал, что попробовал последний код и получил ту же ошибку ... но теперь она работает ... Я, вероятно, просто набрал его неправильно (скорее всего ... СПАСИБО ОГРОМНОЕ!
  • 1
    Другой вопрос, пожалуйста ... Есть ли способ игнорировать дубликаты в SQLite?
Показать ещё 1 комментарий
7

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

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

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

1

Это тоже должно работать:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню