【问题标题】:Android: orderBy only using first digitAndroid:orderBy仅使用第一个数字
【发布时间】:2012-05-23 20:22:25
【问题描述】:

我正在创建一个 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);"
                    );

        }

【问题讨论】:

    标签: android sorting sql-order-by


    【解决方案1】:

    它是按字母顺序排列的。试试:

    ORDER BY ABS(column_name) ASC
    

    【讨论】:

      【解决方案2】:

      您没有显示表格的定义。 DAY 列是数字还是字符串? 如果它是一个字符串,你会看到这种行为。

      【讨论】:

      • 我猜是字符串。我不知道如何改变它。我已经发布了 createTable。
      【解决方案3】:

      如果您将字段声明为 TEXT,则 ORDER BY 子句的工作方式与字段为字符串时一样。如果需要数字顺序,则需要将其声明为 INTEGER 或 LONG。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2013-07-24
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        相关资源
        最近更新 更多