我有一个Android应用程序正在使用SQLite数据库来确定是否已经创建了某些“成就”。如果列中包含每个'season'中的一个,我需要一个返回游标长度为4的查询。
因此,如果我在列''_id'上执行查询,如下所示:
_id:
yada
Autumn
yada
Summer
Summertime
yada
yada
Winter
Spring
它将返回4行光标(从而表明将实现'All Four Seasons'成就。
一个查询是否可以实现,或者我必须在应用程序中使用多个游标和代码?我想使用LIKE,因为并非所有条目都是完全相同的文本(即Summer或Summertime,但两者都应符合条件)。
答案 0 :(得分:1)
您应该能够在查询的where子句中使用and,like,或括号来实现此目的。有点像...
Cursor mC = mDb.query("season", null, "_id like '%summmer%' and "
+ "_id like '%winter%' and "
+ "_id like '%spring%' and "
+ "(_id like '%fall%' or _id like '%autumn%')",
null, null, null, null);
在此之后,您可以拥有类似......
String [] seasons = new String[] {"spring", "summer", "fall", "autumn", "winter");
boolean fallExists = false;
int seasonCount = 0;
for(int i = 0; i < 5; ++i){
if(i == 3 && fallExists) continue;
mC.moveToFirst();
do{
if(mC.getString(ID_COLUMN).toLowerCase().contains(seasons[i])){
seasonCount++;
if(i == 2) fallExists = true;
}
} while ((mC.moveToNext()));
}
if(seasonCount == 4){
//have a party
}