android – 为什么GreenDAO不完全支持LIKE运算符?

android – 为什么GreenDAO不完全支持LIKE运算符?,第1张

概述GreenDAO只支持LIKE运算符的一个位置.它就像 ?” 我想用各种这样的运算符来获取记录.例如,“LIKE%?”,“LIKE?%”和“LIKE%?%”.但GreenDAO不支持它. 我也使用了queryRaw()和queryRawCreate(),遗憾的是它也没有用. 例如: libDocSeriesDao.queryRawCreate( ” Where T.Title Like ‘%?%’ GreenDAO只支持liKE运算符的一个位置.它就像 ?”

我想用各种这样的运算符来获取记录.例如,“liKE%?”,“liKE?%”和“liKE%?%”.但GreenDAO不支持它.

我也使用了queryRaw()和queryRawCreate(),遗憾的是它也没有用.
例如:

libDocSerIEsDao.queryRawCreate(
” Where T.Title like ‘%?%’ Or T.VIEwTitle like ‘%?%'”,aKeyword,
aKeyword).ListLazy();

任何帮助将不胜感激.

解决方法 使用’?’时,’%’字符不能是查询字符串的一部分字符.绑定参数时,可以使用%的任意组合.

以下是如何使用liKE查询的示例(取自greenDA的https://github.com/greenrobot/greenDAO/commit/788313904fa58a0c8628f6b2e016a4a385f344c6单位测试):

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(),"%enrob%");entity2 = query.uniqueOrThrow();assertEquals(entity.getID(),entity2.getID());

相同的原则对原始查询有效.对于您的示例,您应该这样做:

libDocSerIEsDao.queryRawCreate(" Where T.Title like ? Or T.VIEwTitle like ?",aKeyword).ListLazy();

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

总结

以上是内存溢出为你收集整理的android – 为什么GreenDAO不完全支持LIKE运算符?全部内容,希望文章能够帮你解决android – 为什么GreenDAO不完全支持LIKE运算符?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1134419.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存