GreenDao,Sql命令进行查询,判断表中字符串值在某个数值区间

323 阅读1分钟

在使用GreenDao 的时候,通常都是直接用GreenDao已有的queryBuilder,直接.where()直接调用就完事了.

但是最近在使用中遇到一个问题,那就是如果我数据库中保存了一个字符串类型的数值,然后我要判断当前的值在某个数值区间例如是否在10-20之间,因为是字符类型直接使用greendao自带的gt等大于小于的方法,筛选出来的数据是不正确的。

最后还是要用原始的sql命令如下: 下面的查询命令即:查询字段名称1 是xx 并且 字段名称2 在某10-20区间,需要将字符串类型的进行CAST转换然后在比较。如果还需要再添加筛选参数,只需要拼接AND就好。

sql

//伪代码
WHERE 字段名称1 = 'xx'  AND CAST(字段名称2 AS REAL) >= 11 AND CAST(字段名称2 AS REAL) <= 20 ORDER BY  CAST(字段名称2 AS REAL) ASC
//代码--这里还使用了 in 判断字段是否在xx里面
WHERE NAME = '01'  AND CAST(PRICE AS REAL) >= 11 AND CAST(PRICE AS REAL) <= 20 AND TYPE IN ('10', '20', '30', '40') ORDER BY  CAST(PRICE AS REAL) ASC

GreenDao查询

getDaoSession().queryRaw(表名.class,sql语句)//会返回一个查询的当前表的列表