web-dev-qa-db-fra.com

Requête SQLite dans un ordre alphabétique non sensible à la casse

Tout ce que je veux faire, c'est saisir les choses par ordre alphabétique et ignorer les majuscules.

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

C'est le code que j'utilise ci-dessus, mais il me donne toujours une exception SQLite disant que COLLATE est une erreur de syntaxe.

Android.database.sqlite.SQLiteException: près de "COLLATE": erreur de syntaxe:, lors de la compilation: SELECT Artist FROM testTable COLLATE NOCASE ASC

63
Anthony Honciano

COLLATE précède la direction de la commande:

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

Mais vous n'avez pas besoin de ASC - c'est la valeur par défaut, vous pouvez tout aussi bien utiliser:

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

ajoutez COLLATE NOCASE après orderBy String.

db.query (table, colonnes, selection, selectionArgs, groupBy, having, orderBy + "COLLATE NOCASE ASC");

ici, la commande par ASC ou DESC dépend de vos besoins.

7
minhazur

Cela devrait aussi marcher je pense:

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