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、それがこの問題の解決策である場合、Javaを実装する方法がわかりません。誰かがこれを手伝ってくれますか?

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

このようにしてみてください

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 に答える