2011-05-11 165 views
60

我想要做的就是按字母順序抓取所有東西,並忽略大寫字母。不區分大小寫的字母順序的SQLite查詢

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

這是我上面使用的代碼,但它總是給我一個SQLite異常,說COLLATE是一個語法錯誤。

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

回答

157

COLLATE推移順序方向前:

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

但你並不需要ASC - 這是默認的,所以你也可以同樣使用:

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

SOOOO WEIRD!我以爲我嘗試了後面的代碼,並得到相同的錯誤...但現在它的工作...我可能只是輸入不正確(很可能...非常感謝你! – 2011-05-11 01:13:07

+1

另一個問題,請...有沒有在SQLite中忽略重複的方法? – 2011-05-11 01:14:47

+1

@Anthony Honciano:發佈一個關於忽略重複的新問題 - 很可能是,但我需要查看有關重複的詳細信息。 – 2011-05-11 01:17:17

1

這應該也工作我認爲:

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

orderBy String後加上COLLATE NOCASE。

db.query(table,columns,selection, selectionArgs,groupBy,having, orderBy +「COLLATE NOCASE ASC」);

在這裏,由ASC或DESC命令取決於您的需要。