0

月の特定の日のエントリを作成できる SQLite データベースを作成しています。日番号の列を作成しました。エントリはランダムな順序で表示されるので、並べ替えたいと思います。しかし、orderBy を使用すると、数字は最初の桁でのみソートされます。例: 入力順序は (2,31,5,21,16,9,7) です。次に並べ替えると、順序(16,2,21,31,5,7,9)が得られます。これを修正する方法はありますか?

私のエントリーコード

        public void createEntry(int id, int month, int day, int start_hour, int start_min, int stop_hour, int stop_min) 
        {
        ContentValues cv = new ContentValues();
        ourDatabase.beginTransaction();
        cv.put(ROW_ID, id);
        cv.put(MONTH,month);
        cv.put(DAY,day);
        cv.put(START_HOUR,start_hour);
        cv.put(START_MIN,start_min);
        cv.put(STOP_HOUR,stop_hour);
        cv.put(STOP_MIN,stop_min);
        ourDatabase.insert(DATABASE_TABLE, null, cv);
        ourDatabase.setTransactionSuccessful();
        ourDatabase.endTransaction();
    }

そして、データをソートする私のコード

        public ArrayList<String> getDays(){
        String[] columns = new String[]{MONTH, DAY, START_HOUR, START_MIN, STOP_HOUR, STOP_MIN};
        Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, DAY);
        c.moveToLast();
        ArrayList<String> navne = new ArrayList<String>();
        for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            Log.d("Entry", c.getString(1));
            navne.add(c.getString(1)+": "+c.getString(2)+":"+c.getString(3)+" - "+c.getString(4)+":"+c.getString(5));
        }
        return navne;


            public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
                    ROW_ID + " TEXT NOT NULL, " +
                    MONTH + " TEXT NOT NULL, " +
                    DAY + " TEXT NOT NULL, " +
                    START_HOUR + " TEXT NOT NULL, " +
                    START_MIN+ " TEXT NOT NULL, " +
                    STOP_HOUR + " TEXT NOT NULL, " +
                    STOP_MIN + " TEXT NOT NULL);"
                    );

        }
4

3 に答える 3

0

フィールドをTEXTのように宣言すると、ORDER BY句は、フィールドが文字列の場合と同じように機能します。数値順が必要な場合は、INTEGERまたはLONG​​のように宣言する必要があります。

于 2012-06-15T13:05:57.383 に答える
0

テーブルの定義を表示しません。DAY 列は数値ですか、それとも文字列ですか? 文字列の場合、この動作が見られます。

于 2012-05-23T20:26:38.090 に答える
0

アルファベット順です。試す:

ORDER BY ABS(column_name) ASC
于 2012-05-23T20:28:40.767 に答える