66

我想做的就是按字母顺序抓取这些东西并忽略大写字母。

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

这是我在上面使用的代码,但它总是给我一个 SQLite 异常,说 COLLATE 是一个语法错误。

android.database.sqlite.SQLiteException:靠近“COLLATE”:语法错误:,编译时:SELECT Artist FROM testTable COLLATE NOCASE ASC

4

3 回答 3

168

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);
于 2011-05-11T00:53:37.267 回答
7

在 orderBy 字符串之后添加 COLLATE NOCASE。

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

在这里,按 ASC 或 DESC 订购取决于您的需要。

于 2015-04-17T15:21:15.583 回答
2

我认为这也应该有效:

db.rawQuery("SELECT "+ catName 
        +" FROM "+ tableName 
    +" ORDER BY lower("+ catName +");", null);
于 2015-03-03T20:22:24.477 回答