首页 文章

SQLite查询以非大小写敏感的字母顺序[重复]

提问于
浏览
62

这个问题在这里已有答案:

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

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 回答

  • 161

    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);
    
  • 7

    在orderBy String之后添加COLLATE NOCASE .

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

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

  • 2

    我认为这也应该有效:

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

相关问题