目前,我正在使用查询生成器从数据库中提取所有记录,它们目前是按天组织的,但我是按字母顺序排序的,
public Cursor fetchAll() {
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_MODULECODE,
KEY_DAY, KEY_TIME, KEY_DURATION, KEY_TYPE, KEY_ROOM},null, null, null, null,"Day");
}
经过一番谷歌搜索后,我知道我需要用自定义搜索顺序替换最后一部分。 类似于:
select _id, busnum,
case cast (strftime('%w', servdate) as integer)
when 0 then 'Sunday'
when 1 then 'Monday'
when 2 then 'Tuesday'
when 3 then 'Wednesday'
when 4 then 'Thursday'
when 5 then 'Friday'
else 'Saturday' end as servdayofweek
from tb1
where ...
From:
http://stackoverflow.com/questions/4319302/sqlite-return-as-day-of-week
到目前为止,我一直无法弄清楚如何将两者结合起来,如果能在正确的方向上提供任何帮助,我们将不胜感激。
编辑解决方案 感谢您的帮助,我在查询中声明了字符串并链接到它,以供任何需要简单内容的人使用,这是我的最终代码
public Cursor fetchAll() {
String OrderBy ="case Day"+
" when 'Monday' then 0 "+
" when 'Tuesday' then 1"+
" when 'Wednesday' then 2"+
" when 'Thursday' then 3"+
" when 'Friday' then 5"+
" end";
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_MODULECODE,
KEY_DAY, KEY_TIME, KEY_DURATION, KEY_TYPE, KEY_ROOM},null, null, null, null,OrderBy );
}
最佳答案
如果您的 Day
值是日期名称,那么您需要如下所示的内容:
order by case Day
when 'Sunday' then 0
when 'Monday' then 1
when 'Tuesday' then 2
...
when 'Saturday' then 6
end
在 SQL 中;请记住,您几乎可以对任何表达式执行 SQL ORDER BY。 query
的 orderBy
参数可以是任何 SQL ORDER BY 子句(不带 order by
),因此您需要这个又大又难看的字符串:
"case Day when 'Sunday' then 0 when 'Monday' then 1 ... when 'Saturday' then 6 end"
作为查询
的最后一个参数。当然,您必须正确填写...
。
关于Android-使用查询生成器按天对结果进行 SQLite 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406514/