如何在Room数据库中进行搜索

时间:2019-04-24 23:53:18

标签: android android-room

我有一个Room数据库,其中包含一些来自改造的数据,我在此基础上创建搜索,但是当我写完整标题(而不是单词)时,此方法可以搜索并起作用。 例如,我要搜索乌干达,而我的应用找不到与乌干达相比的数据。但是,当我写《乌干达:干旱造成500头母牛死亡》(完整标题)时,我的应用发现了这篇文章。

它比我用于搜索的DAO和代码

//DAO
@Dao
public interface NewsDao {
@Query("SELECT * FROM news WHERE title LIKE :search OR content LIKE :search OR publishedAt LIKE :search ")
    List<News> searchInDatabase(String search);
}

// part of code than searchs 

@Override
    public boolean onQueryTextChange(String newText) {
        if (newText != null && !newText.isEmpty()) {
            newsAfterSearch = newsDao.searchInDatabase(newText);
            displayData(newsAfterSearch);


        } else displayData(news);

        return false;
    }

1 个答案:

答案 0 :(得分:0)

您可以在查询中使用LIKE

SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern;

例如选择所有名称以a开头的客户:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

对于您来说,是这样的(选择所有具有CustomerName且在任何位置都带有“或”的客户):

SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

参考:W3Schools