首页 > 解决方案 > 当输入查询只是该数据的一部分时,如何使用 Room 从我的数据库中获取数据?

问题描述

我在 DAO 中有以下代码,试图为我的软件电话应用程序创建“快速搜索”功能:

// Retrieve the numbers matching the query (e.g. for dialer quick search)
    @Query("SELECT * FROM phone_numbers_table WHERE phone_number LIKE :phoneNumber")
    List<PhoneNumber> getMatchingNumbers(String phoneNumber);

在拨打号码时,我希望我的应用程序获取其中包含当前输入的字符串的所有联系人号码(即,如果我输入了“456”,我想获取其中包含“456”的所有号码)。但是,上面的代码只返回与输入查询完全匹配的数字。

如何更改我的代码以返回我需要的内容?

标签: javaandroidjqueryandroid-roomdao

解决方案


应该更彻底地搜索,这是答案:

// Retrieve the numbers matching the query (e.g. for dialer quick search)
    @Query("SELECT * FROM phone_numbers_table WHERE phone_number LIKE '%' || :phoneNumber || '%'")
    List<PhoneNumber> getMatchingNumbers(String phoneNumber);

推荐阅读