3

我坐在这里想知道如何在不区分大小写的情况下对我的数据库进行排序。假设我有'A','a','B','b'。它将像这样打印:'A','B','a','b'。但我希望它以更人性化的方式排序。这是我的光标功能:

/**
* Return a Cursor over the list of all brands in the database
* 
* @return Cursor over all brands sorted alphabetically 
+ TODO: doesn't sort alphabetically because it's case sensitive
*/
public Cursor fetchAllBrands() {

return mDb.query(Constants.DATABASE_TABLE, 
    new String[] { 
        Constants.KEY_ROWID, Constants.KEY_BRAND, Constants.KEY_STOCK 
    }, 
    null, null, null, null, Constants.KEY_BRAND);
}

我注意到 Java 有CASE_INSENSITIVE_ORDER,但如果这是解决这个问题的方法,我不知道如何实现它。有人可以帮我吗?

4

3 回答 3

5

它在这里得到了回答。不幸的是,您似乎必须使用该rawQuery()方法而不是使用query()包装器方法。此方法允许您输入将像这样执行的原始 SQL 代码...

db.rawQuery("SELECT " + Constants.KEY_ROWID + "," + Constants.KEY_BRAND + "," +
             Constants.KEY_STOCK +
           " FROM " + Constants.DATABASE_TABLE +
           " ORDER BY " + Constants.KEY_BRAND + " COLLATE NOCASE ASC;", null);
于 2012-06-03T21:42:37.823 回答
3

尝试rawQuery(...)使用COLLATE NOCASE. 例子...

return mDb.rawQuery("SELECT " + Constants.KEY_ROWID + ","
              + Constants.KEY_BRAND + ","
              +  Constants.KEY_STOCK
              + " FROM " + Constants.DATABASE_TABLE
              + " ORDER BY " + Constants.KEY_BRAND + " COLLATE NOCASE", null);
于 2012-06-03T21:41:40.180 回答
1

Try like this

public Cursor fetchAllBrands() {

return mDb.query(Constants.DATABASE_TABLE, 
new String[] { 
    Constants.KEY_ROWID, Constants.KEY_BRAND, Constants.KEY_STOCK 
}, 
null, null, null, null, Constants.KEY_BRAND + " COLLATE NOCASE ASC");
}
于 2014-09-08T12:14:40.027 回答