如果文本内部包含特定文本,请选择行

时间:2015-08-05 21:40:54

标签: android sqlite

所以我有一个名为month的输入,我想进行查询,以便从自定义列表视图中的所有行返回包含该特定月份的行。 这是我在DBAdpater中的代码。我必须做什么,以便db返回包含该特定月份的所有行。 我保存日期的格式是05/06/15。在参数中发送的字符串是" / 08 /"。

public Cursor getRowsFromMonth(String month){
    String[] FROM = { 
            KEY_ROWID,KEY_DATE, KEY_DESCRIPTION, KEY_CATEGORY, KEY_AMOUNT, KEY_PAIDBY
    };

    String where = "date=?";

    String[] whereArgs = new String[] { 
            "%"+ month+"%"
    };

    return db.query(DATABASE_TABLE, FROM, where, whereArgs, null, null, null);
}

1 个答案:

答案 0 :(得分:1)

如果您使用通配符(%),则where子句应使用LIKE而不是=,而不是

String where = "date=?";

你需要

String where = "date LIKE ?";

但是,我也会重新考虑如何存储您的日期,因为您可能希望某天使用sqlite的日期时间函数:

  

SQLite没有为存储日期留出的存储类   和/或时间。相反,SQLite的内置日期和时间函数   能够将日期和时间存储为TEXT,REAL或INTEGER   值:

     

TEXT as ISO8601 strings(“YYYY-MM-DD HH:MM:SS.SSS”)。

     

真实如朱利安   日数,11月以来格林威治中午以来的天数   公元前24,4714根据公历格里高利历。

     

INTEGER   as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。   应用程序可以选择在任何这些中存储日期和时间   使用内置日期格式和格式之间自由转换   时间函数。

https://www.sqlite.org/datatype3.html