Android-使用查询生成器按天对结果进行 SQLite 查询

标签 android sqlite sql-order-by query-builder

目前,我正在使用查询生成器从数据库中提取所有记录,它们目前是按天组织的,但我是按字母顺序排序的,

  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。 queryorderBy 参数可以是任何 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/

相关文章:

objective-c - 如何使用FMDB SDK 更改SQLite 表达式树的最大深度?

c# - 用于按特定集列表排序的 LINQ 查询

grails - 如何在 Grails 中按多个字段排序?

android - 触摸位置并点击单一游戏

android - 过滤自定义ArrayAdapter或在 Activity 中实现搜索

android - 无法在 root 的 android 手机上打开数据目录

mysql - 如何为带有 ORDER BY 子句的 SQL 查询选择正确的索引 (MySQL)

android - Kotlin - 设置 @Annotations 。函数返回类型?

android - 在 SpannableStringBuilder getSpans() 中添加额外的行

ruby-on-rails - 我应该在 Rails 中创建用于存储用户地址的新表吗