64 votes

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

Tout ce que je veux, c'est récupérer les trucs 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 : , pendant la compilation : SELECT Artist FROM testTable COLLATE NOCASE ASC

164voto

OMG Ponies Points 144785

COLLATE va avant la direction de l'ordre :

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

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

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

7voto

minhazur Points 3466

Ajouter COLLATE NOCASE après orderBy String.

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

ici, l'ordre par ASC ou DESC dépend de votre besoin.

2voto

dudeman Points 461

Cela devrait fonctionner aussi je pense :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X