gpt4 book ai didi

java - RealmResults 使用精确字符串过滤查询

转载 作者:行者123 更新时间:2023-12-02 10:46:45 25 4
gpt4 key购买 nike

我有一个 Realm 数据库,其中字段 postCategories 包含通过 JSON 从服务器获取的随机字符串类型数据。这些字符串值看起来类似于以下内容:

Semester - I, Marketing, English Version, Short Question
B.Com., Semester - II, E-Commerce, English Version, Broad Question
Semester - III, Marketing, English Version, Short Question
Semester - IV, Company Law, Bengali Version, Short Question
.......

现在,我只想过滤 postCategories 包含 Semester - ISemester - IISemester - III< 的 RealmResults/code> 或 Semester - IV 任何一个,单独。我该怎么办?

我尝试使用以下代码来查找 postCategories 包含 Semester - I 的所有数据:

RealmResults<RealmTitle> realmTitles;
realmTitles = realm.where(RealmTitle.class)
.contains("postCategories", "Semester - I").findAll();

但这给出了学期 - I学期 - II学期 - III学期 - IV 的所有数据.

我可以找到一个临时解决方案,如下。

realmTitles = realm.where(RealmTitle.class)
.contains("postCategories", "Semester - I")
.and().not()
.contains("postCategories", "Semester - II").findAll();

这是为了防止将学期 - II 添加到结果中。但这似乎不是一个好的解决方案。请帮助我找到更合适的解决方案。

谢谢。任何帮助将不胜感激。

最佳答案

要选择第一学期、第二学期、第三学期或第四学期,请尝试按模式过滤,即一篇文章中不要有 2 个“学期 - I”类别:

realmTitles = realm
.where(RealmTitle.class)
.contains("postCategories", "Semester - I")
.and().not().like("postCategories", "*Semester - I*Semester - *")
.findAll();

如果排除第四学期很重要

realmTitles = realm
.where(RealmTitle.class)
.contains("postCategories", "Semester - I")
.and().not().like("postCategories", "*Semester - I*Semester - *")
.and().not().contains("postCategories", "Semester - IV")
.findAll();

如果您只想拥有那些,即只有第一学期:

realmTitles = realm
.where(RealmTitle.class)
.like("postCategories", "*Semester - I")
.or().contains("postCategories", "Semester - I,")
.and().not().like("postCategories", "*Semester - *Semester - *")
.findAll();

关于java - RealmResults 使用精确字符串过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com