簡體   English   中英

Realm.io - 如何使用通配符%LIKE%進行查詢

[英]Realm.io - How to use wildcard %LIKE% for a query

我正在嘗試:

mRealm
         .where(Contact.class)
         .equalTo(Contact.NAME, text, Case.INSENSITIVE)
         .findAllSortedAsync(Contact.NAME, Sort.ASCENDING);

結果: 未達到預期結果。

mRealm
         .where(Contact.class)
         .contains(Contact.NAME, text, Case.INSENSITIVE)
         .findAllSortedAsync(Contact.NAME, Sort.ASCENDING);

結果: 未達到預期結果。

預期結果:

mRealm
         .where(Contact.class)
         .like(Contact.NAME, text, Case.INSENSITIVE)
         .findAllSortedAsync(Contact.NAME, Sort.ASCENDING);

新答案:

領域2.3.0+:

 public RealmQuery<E> like(String fieldName, String value, Case casing) 

使用通配符調整字段值與指定子字符串匹配的條件:

  • '*'匹配[0, n] unicode字符

  • '?' 匹配單個unicode char。

參數:

  • fieldName - 要比較的字段。

  • value - 通配符字符串。

  • casing - 如何處理套管。 將此設置為Case.INSENSITIVE僅適用於Latin-1字符。

返回:查詢對象。

拋出:IllegalArgumentException - 如果一個或多個參數與類或字段類型不匹配。


老答案:

mRealm
     .where(Contact.class)
     .contains(Contact.NAME, text, Case.INSENSITIVE)
     .findAllSortedAsync(Contact.NAME, Sort.ASCENDING);

這應該可以,但是當完成實際的異步查詢時,您將收到對附加的RealmChangeListener的回調。

RealmRecyclerViewAdapter會自動從https://github.com/realm/realm-android-adapters執行此操作。

mRealm
     .where(Contact.class)
     .like(Contact.NAME, text, Case.INSENSITIVE)
     .findAllSortedAsync(Contact.NAME, Sort.ASCENDING);

這段代碼適合我。

Realm realm=Realm.getDefaultinstance();
RealmResults<Item> reaaa = realm.where(Item.class).like("name",query,Case.INSENSITIVE).findAll();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM