android房间查询:文本与搜索字符串完全匹配或以搜索字符串开头

koaltpgm  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(524)

android的room查询应该是什么来匹配一个列数据,或者以搜索字符串开始
这似乎只给了我确切的匹配 select * from table where dna_sequence like :searchTerm 谢谢

t1rydlwq

t1rydlwq1#

这似乎只给了我确切的匹配

select * from table where dna_sequence like :searchTerm

你的问题没有错。问题出在java或kotlin代码上。你得到的是一个精确匹配,因为你传递的是一个精确匹配 searchTerm 不使用任何通配符。这个 LIKE sql中的运算符允许我们在字符串中使用通配符来匹配不仅仅是严格相等。 _ 将匹配单个字符 % 将匹配零个或多个字符。如果不使用这些通配符 LIKE 将与 = . 所以你需要传递一个值 searchTerm 使用通配符之一的。例如,如果您将一个dao接口声明为

@Dao
public interface MyDao {
    @Query("SELECT * FROM foo WHERE search like :searchTerm")
    public Foo[] getFooSearch(String searchTerm);
}

您可以通过以下方式调用该方法:

MyDao dao;
dao.getFooSearch("abcdef%");

它将匹配字符串的开头。
注意:这个例子有点做作,因为您只提供了sql查询,没有为dao或数据实体提供任何java或kotlin代码。

1zmg4dgp

1zmg4dgp2#

在搜索方法中尝试以下操作:

public String getResultForSearchString(String searchTerm){
String searchExptression=searchTerm+"%";
//.. perform search operation on SQLite with searchExpression
return result;
}

有关更多信息,请访问:https://www.sqlitetutorial.net/sqlite-like/
希望有帮助。

相关问题