SQLite查询以非大小写敏感的字母顺序排列

时间:2011-05-11 00:49:39

标签: android sql sqlite sql-order-by collate

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

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

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

  

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

3 个答案:

答案 0 :(得分:162)

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 :(得分:7)

在orderBy String之后添加COLLATE NOCASE。

db.query(表,列,选择,             selectionArgs,groupBy,having,             orderBy +“COLLATE NOCASE ASC”);

这里,ASC或DESC的订单取决于您的需要。

答案 2 :(得分:2)

我认为这也应该有效:

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