6

GreenDAO 只支持 LIKE 算子的一个位置。它是" LIKE ?"

我想用这个运算符获取各种记录。例如" LIKE %?"," LIKE ?%"" LIKE %?%". 但 GreenDAO 不支持。

我也用过queryRaw()and queryRawCreate(),不幸的是它也没有用。例如:

libDocSeriesDao.queryRawCreate(" where T.Title Like '%?%' or T.ViewTitle Like '%?%'", aKeyword, aKeyword).listLazy();

任何帮助将不胜感激。

4

2 回答 2

8

使用 '?' 时,'%' 字符不能是查询字符串的一部分 特点。绑定参数时可以使用 % 的任意组合。

这是一个如何使用 LIKE 查询的示例(取自https://github.com/greenrobot/greenDAO/commit/788313904fa58a0c8628f6b2e016a4a385f344c6的 greenDAO 的单元测试):

Query<TestEntity> query = dao.queryBuilder().where(Properties.SimpleString.like("%robot")).build();
TestEntity entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(), entity2.getId());

query.setParameter(0, "green%");
entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(), entity2.getId());

query.setParameter(0, "%enrob%");
entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(), entity2.getId());

同样的原则也适用于原始查询。对于您的示例,您应该这样做:

libDocSeriesDao.queryRawCreate(" Where T.Title Like ? Or T.ViewTitle Like ?", aKeyword, aKeyword).listLazy();

此外,aKeyword 必须具有 % 字符。

于 2012-10-21T08:53:09.717 回答
5

更容易:

dao.queryBuilder().where(Properties.SimpleName.like(name+"%")).list()
于 2014-10-16T11:06:08.240 回答