2017-04-19 9 views
0

AndroidのSqliteデータベースに文字列としてIntegerを格納しましたが、データの最大値を見つける必要があります。それは、保存された番号の最大値をソートすることになると11整数が不正なMAX値を返す文字列として格納されるSqlite Android

が私のコードやより良いことなくこれをソートする方法に何か問題があります前に、9が来ている

public String getMaxPageFromMainDB(){ 
    String maxNoStr =null; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery("SELECT MAX(donebottombar) FROM customers",null); 
    if(cursor.moveToFirst()) { 
     maxNoStr = cursor.getString(0); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 
    return maxNoStr; 
} 

:私は、次のコードを持っていますデータベーススキーマを変更しますか?

としては、コードはほとんど変化して、以下の答え:あなたは、文字列に整数計算を行うにしようとしている

Cursor cursor = db.rawQuery("SELECT MAX(CAST(donebottombar AS INTEGER)) FROM customers",null); 

答えて

0

保存されたデータ型を使用して、値を比較する方法が異なる場合、あなたがそれらをconvertする必要があります。

SELECT MAX(CAST(donebottombar AS INT)) FROM customers; 
SELECT MAX(CAST(donebottombar AS TEXT)) FROM customers; 
+0

ありがとう、あなたは私を置く適切なトラックに。構文がキーでした。次のコードは私のために働いた:カーソルカーソル= db.rawQuery( "SELECT MAX(CAST(doneBottombar AS INTEGER))FROM customers"、null); – MarkC

0

文字列でMAXを使用する場合、 "MAX"文字列はテーブルの先頭にある文字列です。 「http://www.java2s.com/Tutorial/Oracle/0240__Aggregate-Functions/UseMAXwithstrings.htm」から

引用:あなたは文字列でMAX()を使用する場合
、文字列は、リストの一番下にいる 『最大』の文字列との頂上にいる 『最小』の文​​字列をアルファベット順に並べられリスト。

この値は、文字列ではなくデータベースの整数として保存する必要があります。

+0

私はそれを推測しますが、私はこの修正ではなく、私のコードのオーバーホールのために願っています。私はSqliteにINTとしてCASTがあることに気づいていますが、Android Sqliteには同等の機能がありますか? – MarkC

+0

http://stackoverflow.com/questions/41634060/how-to-get-max-value-of-column-type-in​​teger-stored-as-type-text-in-sqlite-table – MarkC

関連する問題