2012-02-01 15 views
10

Ho dati nel mio database come questo:interrogazione SQLiteDatabase Android ordinamento ordine

Alice 
anderson 
Beatrice 
benny 
Carmen 
calzone 

utilizzando questo codice:

mDb.query(DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
      KEY_NAME }, null, null, 
      null, null, KEY_NAME+ " ASC"); 

o questo codice con il filtro di essere "":

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
     KEY_NAME }, KEY_NAME + " LIKE ?", 
     new String[] { filter+"%" }, null, null, null, 
     null); 

Ordina i dati di cui sopra in questo modo:

Alice 
Beatrice 
Carmen 
anderson 
benny 
calzone 

È normale? Come faccio a ordinare l'ordine sopra in cui sono presenti tutti gli As e Bs e C? Grazie.

risposta

9

È possibile specificare la distinzione tra maiuscole e minuscole aggiungendo COLLATE NOCASE, nella clausola ORDER BY o (preferibilmente) quando si crea la tabella stessa nella dichiarazione di quella particolare colonna.

+0

Questo funziona! Grazie! – Maurice

12

SQL utilizza posizione ASCII per ordinare in modo usereste "COLLATE" in qualche modo ...

qualcosa nella natura di:

ORDER BY YourColumn Collate NOCASE 

o

ORDER BY YourColumn Collate SQL_Latin1_General_CP850_BIN 
+0

Anche la tua risposta è corretta, ma EboMike è arrivato per primo. :) Grazie anche se sei stato perfetto! – Maurice

+1

+1 da parte mia! – EboMike

1

Cursore c = db.query (YOUR_TABLE_NAME, null, null, null, null, null, YOUR_COLOMN_NAME + "Collate NOCASE");

+0

Puoi spiegare un po 'di più? –

+0

nel mio caso, voglio visualizzare 'nome' dalla mia tabella 'form' in ordine, quindi ho usato ..--> Cursore c = db.query ("form", null, null, null, null, null, "nome Collate NOCASE"); E poi ---> while (c.moveToNext()) {String studentname = c.getString (0) .toString()} Nota: - 'name' è la mia prima colonna nel database. – user2786249

Problemi correlati