2011-05-11 40 views
60

Todo lo que quiero hacer es tomar las cosas en orden alfabético e ignorar las letras mayúsculas.Consulta SQLite en orden alfabético no sensible a mayúsculas

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

Este es el código que estoy usando más arriba, pero siempre me da una excepción SQLite diciendo que INTERCALAR es un error de sintaxis.

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

Respuesta

157

COLLATE va delante de la dirección orden:

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

Pero usted no necesita el ASC - que es el valor por defecto por lo que podría utilizar tan bien:

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

SOOOO WEIRD! Pensé que probé el último código y obtuve el mismo error ... pero ahora funciona ... Probablemente lo escribí incorrectamente (muy probablemente ... GRACIAS MUCHO! –

+1

Otra pregunta, por favor ... ¿Hay alguna forma de ignorar los duplicados en SQLite? –

+1

@Anthony Honciano: publique una nueva pregunta sobre ignorar los duplicados, muy probablemente sí, pero necesitaría ver los detalles sobre la duplicación. –

1

Este debería funcionar también creo:

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

agrega COLLATE NOCASE después de ordenar por String.

db.query (tabla, columnas, selección, selectionArgs, groupBy, having, orderBy + "COLLATE NOCASE ASC");

aquí, ordenado por ASC o DESC depende de su necesidad.

Cuestiones relacionadas