Search code examples
androidsqlsqlitesql-order-bycollate

SQLite Query in non case sensitive alphabetical order


All I want to do is grab the stuff in alphabetical order and ignore the capital letters.

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

This is the code I'm using above, but it always gives me an SQLite exception saying that COLLATE is a syntax error.

android.database.sqlite.SQLiteException: near "COLLATE": syntax error: , while compiling: SELECT Artist FROM testTable COLLATE NOCASE ASC


Solution

  • COLLATE goes before the order direction:

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

    But you don't need the ASC -- that's the default so you could just as well use:

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